Foros del Web » Programando para Internet » PHP »

Sabeis como puedo modificar este codigo para verlo en castellano

Estas en el tema de Sabeis como puedo modificar este codigo para verlo en castellano en el foro de PHP en Foros del Web. Hola! Os explico tengo un blog de wordpress y uso un plugin llamado time since y esta en ingles y quiero pasarlo al castellaño pero ...
  #1 (permalink)  
Antiguo 19/11/2008, 06:55
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 15 años, 5 meses
Puntos: 33
Sabeis como puedo modificar este codigo para verlo en castellano

Hola!
Os explico tengo un blog de wordpress y uso un plugin llamado time since y esta en ingles y quiero pasarlo al castellaño pero tengo un problema con la sección de los meses ya que el código añade una "s" al final de cada palabra y claro en castellano el mes necesito añadir "es" pero no se como hacerlo.
Os coloco el código para que veáis su funcionamiento:
Código:
<?php 
/* 
Plugin Name: Dunstan's Time Since 
Plugin URI: http://binarybonsai.com/wordpress/timesince
Description: Tells the time between the entry being posted and the comment being made.
Author: Michael Heilemann & Dunstan Orchard
Author URI: http://binarybonsai.com
Version: 1.1

This plugin is based on code from Dunstan Orchard's Blog. Pluginiffied by Michael Heilemann:
http://www.1976design.com/blog/archive/2004/07/23/redesign-time-presentation/

adapted from original code by Natalie Downe
http://blog.natbat.co.uk/archive/2003/Jun/14/time_since

Notes by Michael Heilemann:
I am by _no_ means a PHP guru. In fact, I couldn't code my way out of a piece of wet cardboard.
But I really wanted to use Dunstan's code on Binary Bonsai, and this is the result. So please,
do not mock me for what is probably some very weird code.

*Instructions for use with WordPress 1.5:*
	
	Since Entry Publication:
	<?php if (function_exists('time_since')) { echo time_since(abs(strtotime($post->post_date_gmt . " GMT")), time()) ?> ago <? } else { the_time('F jS, Y') } ?>
"Este es el codigo original que no funciona"
	Since Comment Publication:
	<?php if (function_exists('time_since')) { echo time_since(abs(strtotime($comment->comment_date_gmt . " GMT")), time()) ?> ago <? } else { the_time('F jS, Y') } ?>


The code needed looks a bit convoluted because this function is capable of more than
simply telling the time since an entry was published, but I'll leave that to more
skilled codemongers to figure out. Inputs must be unix timestamp (seconds)
$newer_date variable is optional

Please direct support questions to: http://www.flickr.com/groups/binarybonsai/
And gratitude to: http://www.1976design.com/blog/
And sour comments to: null

*/

function time_since($older_date, $newer_date = false)
	{
	// array of time period chunks
	$chunks = array(
	array(60 * 60 * 24 * 365 , 'año'),
	array(60 * 60 * 24 * 30 , 'mes'), //Este el donde tengo el problema
	array(60 * 60 * 24 * 7, 'semana'),
	array(60 * 60 * 24 , 'día'),
	array(60 * 60 , 'hora'),
	array(60 , 'minuto'),
	);
	
	// $newer_date will equal false if we want to know the time elapsed between a date and the current time
	// $newer_date will have a value if we want to work out time elapsed between two known dates
	$newer_date = ($newer_date == false) ? (time()+(60*60*get_settings("gmt_offset"))) : $newer_date;
	
	// difference in seconds
	$since = $newer_date - $older_date;
	
	// we only want to output two chunks of time here, eg:
	// x years, xx months
	// x days, xx hours
	// so there's only two bits of calculation below:

	// step one: the first chunk
	for ($i = 0, $j = count($chunks); $i < $j; $i++)
		{
		$seconds = $chunks[$i][0];
		$name = $chunks[$i][1];

		// finding the biggest chunk (if the chunk fits, break)
		if (($count = floor($since / $seconds)) != 0)
			{
			break;
			}
		}

	// set output var
	$output = ($count == 1) ? '1 '.$name : "$count {$name}s";

	// step two: the second chunk
	if ($i + 1 < $j)
		{
		$seconds2 = $chunks[$i + 1][0];
		$name2 = $chunks[$i + 1][1];
		
		if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0)
			{
			// add to output var
			$output .= ($count2 == 1) ? ', 1 '.$name2 : ", $count2 {$name2}s";
			}
		}
	
	return $output;
	}
?>
y aparte me podríais decir por que el código que dicen para que salga no funciona y uso este otro:
Código:
"Este es el codigo original que funciona"
<? if (function_exists('time_since')) { echo time_since(abs(strtotime($post->post_date_gmt . " GMT")), time()); } else { the_time('F jS, Y'); } ?>
Gracias!!!
  #2 (permalink)  
Antiguo 19/11/2008, 07:18
Avatar de danielrivas  
Fecha de Ingreso: noviembre-2007
Ubicación: Preprocessing
Mensajes: 275
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: Sabeis como puedo modificar este codigo para verlo en castellano

Código PHP:
    // set output var
    
$output = ($count == 1) ? '1 '.$name "$count {$name}s"
Código PHP:
// add to output var
            
$output .= ($count2 == 1) ? ', 1 '.$name2 ", $count2 {$name2}s"
Ahí es donde añade la "s" si hay mas uno, y lo tienes que cambiar por "es".
  #3 (permalink)  
Antiguo 19/11/2008, 08:04
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 15 años, 5 meses
Puntos: 33
Respuesta: Sabeis como puedo modificar este codigo para verlo en castellano

Gracias por contestar tan rápido!
He probado lo que dices pero no funciona, ya que si añado es lo que hace es añadirle a todos "es" y por ejemplo si miro en año se ve añoes, habría alguna manera de que separe los meses del codigo para que solo se haga en esa sección?
  #4 (permalink)  
Antiguo 21/11/2008, 16:43
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 15 años, 5 meses
Puntos: 33
Respuesta: Sabeis como puedo modificar este codigo para verlo en castellano

Hola de nuevo!
Veo que a nadie se le ocurre lo que puedo hacer para cambiarlo.
Bueno seguiré buscando y mirando este post por si encuentro la solución.
Saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:52.