Foros del Web » Programando para Internet » PHP »

Mes que quero pasar a español

Estas en el tema de Mes que quero pasar a español en el foro de PHP en Foros del Web. Amigos tengo una clase que me imprime una tabla con un calendario de evento el cual me funciona bien pero tengo 2 problemas el mes ...
  #1 (permalink)  
Antiguo 14/07/2006, 15:26
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 15 años
Puntos: 1
Mes que quero pasar a español

Amigos tengo una clase que me imprime una tabla con un calendario de evento el cual me funciona bien pero tengo 2 problemas el mes lo imprime en ingles y la forma de introducir los datos es a tarves de un array dentro del codigo

Lo que que quiero primero es cambiar el mes de ingles a español

el codigo es este:

Código PHP:
class NiceCalendar {
  var 
$month,$year,$data,$tt;
   
     function 
NiceCalendar($data='',$tooltip=true,$month='',$year=''){
       
$this->month=($month!='')?$month:date('n');
       
$this->year=($year!='')?$year:date('Y');
       
$this->data=$data;
       
$this->tt=$tooltip;
     }
     
     function 
draw(){
       
$time=mktime(0,0,0,$this->month,1,$this->year);
       
$lastDaydate('t',$time);
       
$firstDay=date('w',$time);
       
$today=date('j');

       
$i=1;
       
$days=array('Dom','Lun','Mar','Mier','Jue','Vie','Sab');
       
       echo 
'<div id="calendar"><table cellpadding="2" cellspacing="1">';
       echo 
'<tr class="header">';
       foreach (
$days as $k=>$v) echo '<td class="day">'.$v.'</td>';
       echo 
'</tr>';
       
       while(
$i<=$lastDay){
        echo 
'<tr>'
         for (
$j=0;$j<7;$j++){
           
$note=$this->data[$i.'-'.$this->month.'-'.$this->year];
           if(
is_array($this->data) && $note) {
             if (
$this->tt$day='<span style="margin-top:0px;" id="header=[] body=['.str_replace('“','\'',str_replace('”','\'',str_replace('"','\'',$note[1]))).'] delay=[20] fade=[on] cssbody=[toolbody]" onclick="location.href=\''.$note[0].'\'">'.$i.'</span>';
             else 
$day='<span><a href=\''.$note[0].'\'">'.$i.'</a></span>';
           
$class='note';
           }
           else {
$day=$i;$class='';}
          
           if(
$i.$this->month.$this->year==$today.date('nY')) {echo '<td class="row'.($j%2).' current '.$class.'">'.$day.'</td>';$i++;}
           elseif((
$i!=|| $firstDay==$j) && $i<=$lastDay) {echo '<td class="row'.($j%2).' '.$class.'">'.$day.'</td>';$i++;}
           else  echo 
'<td>&nbsp;</td>';
         }
        echo 
'</tr>';          
       }
       
/*if($mes=date('F',$time)=='January') $mes='Enero';
       if($mes=date('F',$time)=='February') $mes='Febrero';
       if($mes=date('F',$time)=='March') $mes='Marzo';
       if($mes=date('F',$time)=='April') $mes='Abril';
       if($mes=date('F',$time)=='May') $mes='Mayo';
       if($mes=date('F',$time)=='June') $mes='Junio';
       if($mes=date('F',$time)=='July') $mes='Julio';
       if($mes=date('F',$time)=='August') $mes='Agosto';
       if($mes=date('F',$time)=='September') $mes='Septiembre';
       if($mes=date('F',$time)=='October') $mes='Octubre';
       if($mes=date('F',$time)=='November') $mes='Noviembre';
       if($mes=date('F',$time)=='December') $mes='Diciembre';*/


       
if ($this->month==1) {$pmonth=12;$pyear=$this->year-1;}  else  {$pmonth=$this->month-1;$pyear=$this->year;}
       if (
$this->month==12) {$nmonth=1;$nyear=$this->year+1;}  else  {$nmonth=$this->month+1;$nyear=$this->year;}
       
$query_str=str_replace('&month='.$this->month.'&year='.$this->year,'',$_SERVER['QUERY_STRING']);
       
$query_str=str_replace('?month='.$this->month.'&year='.$this->year,'',$query_str);
       
$page=($_SERVER['QUERY_STRING'])?$_SERVER['PHP_SELF'].'?'.$query_str.'&':$_SERVER['PHP_SELF'].'?';
       echo 
'<tr><td><a href="'.$page.'month='.$pmonth.'&year='.$pyear.'#calendar">&laquo;</a></td><td colspan="5"><b>'.date('F',$time).'</b> <span class="y">'.date('Y',$time).'</span></td><td><a href="'.$page.'month='.$nmonth.'&year='.$nyear.'#calendar">&raquo;</a></td></tr>';
       echo 
'</table></div>';
       echo 
$nmonth;
     }
  } 
  
  
  
?> 
Lo que esta comentado era una prueba para cambiarlo el cual funciona a media es decir cuando coloque hasta julio y corro el codiho funciona pero si lo coloco completo hasta diciembre no aparece nada de nada en ningun mes solo el año

El comando que imprime el mes en ingles es. date(F,$tme), como lo puedo cambiar para que imprima en español

ayuda plissssss

Ayude es este y sugerencia para hacerlo mas dinamico desde una base de datos donde se encuentra los eventos y pasarlo al arreglo del codigo ARRAY
__________________
Miguel Padrón :cool:
  #2 (permalink)  
Antiguo 14/07/2006, 15:43
 
Fecha de Ingreso: julio-2006
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
pues , te necesita este codigo ?!?

Código PHP:
<?php    
        $date 
date("F");    
        
$meses = array("January"=>"Enero",
                        
"February"=>"Febrero",      
                         
"March"=>"Marzo",       
                         
"April"=>"Abril",       
                        
"May"=>"Mayo"
                        
"June"=>"Junio"
                        
"July"=>"Julio"
                       
"August"=>"Agosto"
                        
"September"=>"Septiembre"
                        
"October"=>"Octubre"
                         
"November"=>"Noviembre"
                        
"December"=>"December");
         echo 
$meses[$date];
?>
  #3 (permalink)  
Antiguo 14/07/2006, 16:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 6 meses
Puntos: 2122
Tip: usa mejor setlocale()
  #4 (permalink)  
Antiguo 17/07/2006, 06:01
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 15 años
Puntos: 1
Gracias por contestar, pero el de exit funciona pero al cambiar de mes se queda julio en todos lo mese, es decir no pasa por el siclo y el de GatorV no lo entiendo mucho

Por favor alguien me puede decir como colocar estos codigo dentro del ciclo para cuando cambie de mes el mismo me de el mes que corresponde pero en español :(
__________________
Miguel Padrón :cool:
  #5 (permalink)  
Antiguo 17/07/2006, 12:58
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 15 años
Puntos: 1
Por fa ayudenme
__________________
Miguel Padrón :cool:
  #6 (permalink)  
Antiguo 17/07/2006, 13:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 6 meses
Puntos: 2122
La funcion de setlocale() te ayuda, para varias cosas, entre ellas, cambiar el idioma de los strings por defecto de PHP, asi como el formato de las monedas, y varias cosas que vienen en Ingles por defecto.

Si ves la documentacion podras usar la funcion como debe ser sin modificar nada.
  #7 (permalink)  
Antiguo 18/07/2006, 10:01
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 15 años
Puntos: 1
Gracias Gatorv tenias razon era como tu lo sugeria, asi que gracias
__________________
Miguel Padrón :cool:
  #8 (permalink)  
Antiguo 18/07/2006, 11:35
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
Pues yo también necesito ayuda... No sé exactamente cómo he de usar esta función para que me traduzca los meses y días al español, xq los mensajes de error sí que salen in spanish.

Uso PHP 5.0.4 en IIS montado en XP (CGI) y tb tengo un server con Windows 2003 Server y PHP 5.1.2 (ISAPI).

Código PHP:
//Ni usando el LC_ALL o cada tipo diferente me cambia el idioma...
setlocale (LC_ALL,"sp-SP");
setlocale (LC_ALL,"spanish");
setlocale (LC_ALL,"es-ES"); //Me lo pasa a Estonio...
setlocale (LC_ALL,"ESP"); 
Cree la fecha que cree me sigue saliendo los nombres en inglés.
__________________
La muerte es un camino que todos debemos recorrer...
  #9 (permalink)  
Antiguo 18/07/2006, 11:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 6 meses
Puntos: 2122
Prueba:
Código PHP:
setlocaleLC_ALL"esp" ); 
  #10 (permalink)  
Antiguo 18/07/2006, 11:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 6 meses
Puntos: 2122
Ahora otra cosa, checa bien la documentacion, especificamente te dice que el SO tiene que tener el "idioma" instalado para que pueda leer el string, es decir si tienes tu SO en Ingles y no haz instalado otros language packs no creo que puedas cambiar via setlocale, y vas a tener que buscar otras maneras.
  #11 (permalink)  
Antiguo 18/07/2006, 11:56
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
Tampoko funciona... Este es el único código que tengo en la página... Quería comprobar la funcionalidad pues jamás he logrado que rule y, claro, ya q ví el post aprovecha uno pa enterarse bien.

Código PHP:
<?php
//Fecha en inglés que es el lenguaje que tiene por defecto
$dia=date ("d");
$diatext=date ("l");
$mes=date ("F");
$ano=date ("Y");
$fecha="$diatext, $dia - $mes - $ano<br>";
echo 
$fecha;
$l=setlocale (LC_TIME,'esp');
if (!
$l) echo "Fallo en el setlocale<br>";
//Deberia pillar la fecha en español, pero va a ser que no...
$dia=date ("d");
$diatext=date ("l");
$mes=date ("F");
$ano=date ("Y");
$fecha="$diatext, $dia - $mes - $ano<br>";
echo 
$fecha;
?>
No da ningún error. Tengo el display_errors a ON.
__________________
La muerte es un camino que todos debemos recorrer...
  #12 (permalink)  
Antiguo 18/07/2006, 12:06
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 11 años, 6 meses
Puntos: 3
Cita:
setlocale( LC_ALL, "esp" );
como dice GatorV
Establecer la localizacion al idioma español
Código PHP:
setlocale(LC_ALL,"es_ES","esp"); 
Ahora para la salida de la localizacion has de usar tambien el string strftime
Código PHP:
echo strftime("%A %d de %B del %Y"); 
y lo otro que te dijeron es que has de instalar varios paquetes de lenguajes
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #13 (permalink)  
Antiguo 18/07/2006, 12:11
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
Ok, con el strftime ya formatea todo al español. Gracias por la ayuda. Pensaba que todas las funciones PHP devolverían sus resultados en español, jejeje.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #14 (permalink)  
Antiguo 18/07/2006, 12:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 6 meses
Puntos: 2122
Esto me sirve a mi:
Código PHP:
<?php
header
"Content-type: text/plain" );
/* Ingles por defecto */
echo strftime("%A %d %B %Y"mktime());
echo 
"\n";

/* Probar con Español */
setlocaleLC_ALL'spanish-modern' );
echo 
strftime("%A %d %B %Y"mktime());
echo 
"\n";
?>
En Apache 1.3, PHP 5.1.4, WinXP SP2, ahora deberias de ver la documentacion, date(), no soporta el uso de setlocale, por eso debes de usar strftime, que si aprovecha de esa caracteristica.
  #15 (permalink)  
Antiguo 18/07/2006, 12:46
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 15 años
Puntos: 1
GatorV y para linux en servidor externo???????
__________________
Miguel Padrón :cool:
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 08:27.