sábado, 14 de enero de 2012

Mejor usar el español

El script creado en la entrada anterior devolvía las fechas del día actual, el anterior y el siguiente, pero tanto el día de la semana, como el mes, quedaban en inglés.
Para pasarlos al español se podría utilizar una función como la siguiente:

<?php
function traducir($fecha) {
if (strpos($fecha,"Monday")!==false) {
$fecha=preg_replace("/Monday/","Lunes",$fecha);
}
if (strpos($fecha,"Tuesday")!==false) {
$fecha=preg_replace("/Tuesday/","Martes",$fecha);
}
if (strpos($fecha,"Wednesday")!==false) {
$fecha=preg_replace("/Wednesday/","Miércoles",$fecha);
}
if (strpos($fecha,"Thursday")!==false) {
$fecha=preg_replace("/Thursday/","Jueves",$fecha);
}
if (strpos($fecha,"Friday")!==false) {
$fecha=preg_replace("/Friday/","Viernes",$fecha);
}
if (strpos($fecha,"Saturday")!==false) {
$fecha=preg_replace("/Saturday/","Sábado",$fecha);
}
if (strpos($fecha,"Sunday")!==false) {
$fecha=preg_replace("/Sunday/","Domingo",$fecha);
}
if (strpos($fecha,"January")!==false) {
$fecha=preg_replace("/January/","enero",$fecha);
}
if (strpos($fecha,"February")!==false) {
$fecha=preg_replace("/February/","febrero",$fecha);
}
if (strpos($fecha,"March")!==false) {
$fecha=preg_replace("/March/","marzo",$fecha);
}
if (strpos($fecha,"April")!==false) {
$fecha=preg_replace("/April/","abril",$fecha);
}
if (strpos($fecha,"May")!==false) {
$fecha=preg_replace("/May/","mayo",$fecha);
}
if (strpos($fecha,"June")!==false) {
$fecha=preg_replace("/June/","junio",$fecha);
}
if (strpos($fecha,"July")!==false) {
$fecha=preg_replace("/July/","julio",$fecha);
}
if (strpos($fecha,"August")!==false) {
$fecha=preg_replace("/August/","agosto",$fecha);
}
if (strpos($fecha,"September")!==false) {
$fecha=preg_replace("/September/","setiembre",$fecha);
}
if (strpos($fecha,"October")!==false) {
$fecha=preg_replace("/October/","octubre",$fecha);
}
if (strpos($fecha,"November")!==false) {
$fecha=preg_replace("/November/","noviembre",$fecha);
}
if (strpos($fecha,"December")!==false) {
$fecha=preg_replace("/December/","diciembre",$fecha);
}
return $fecha;
}
?>

Como se ve, el script precedente, declara una función de nombre traducir, a la que hay que pasarle un parámetro $fecha. Luego, busca con strpos, si en el contenido de $fecha está, por ejemplo, la palabra "Friday". En caso que la función no devuelva false, quiere decir que Friday sí está dentro de $fecha. Entonces, sustituye Friday por viernes con la función preg_replace. Y repite el mismo procedimiento con los nombres de los siete días de la semana y de los doce meses del año.
Para poder usar esta función se podría declararla dentro del mismo script de la entrada anterior o, mejor aún, declararlo en un script aparte y luego incluirlo. Para ello se debe guardar el script recién creado con un nombre, por ejemplo, funciones.php, y luego incluirlo en el script como se ve a continuación:

<?php
include("funciones.php");
$ayer=mktime(0,0,0,date("m"),date("d")-1,date("Y"));
$manana=mktime(0,0,0,date("m"),date("d")+1,date("Y"));
echo "<div style='text-align:center;'>";
echo "<h3>Hoy es ".traducir(date('l d \d\e F \d\e Y'))."</h3>";
echo "Ayer fue ".traducir(date('l d \d\e F \d\e Y',$ayer))."<br>";
echo "Ma&ntilde;ana ser&aacute; ".traducir(date('l d \d\e F \d\e Y',$manana))."</div>";
?>

Las diferencias con respecto al script de la entrada anterior son:

  • la inclusión (con la función include) del script funciones.php en la línea 2,
  • el llamado, o invocación, a la función traducir (declarada en el script funciones.php) en las líneas 6, 7 y 8.

Al ejecutar este script el 13 de enero de 2012, da el siguiente resultado:


Lecturas recomendadas

No hay comentarios:

Publicar un comentario

Gracias por el comentario.
Luego de ser sometido a moderación y si amerita, será publicado.