Supporto » Varie ed eventuali » [SOLVED] Traduzione mesi

  • Salve, ho un sito con versione 4.2.2–it_IT
    nel file config ho inserito define(‘WPLANG’, ‘it_IT’);
    nelle cartelle language ho i file it_IT.po

    è tutto tradotto tranne i nomi dei mesi e dei giorni che mi rimangono in inglese. ho già contattato il supporto del tema installato e mi assicurano che non usano qualcosa di loro ma che viene preso dal core di wordpress.

    qualcuno sa come posso risolvere?
    grazie
    Paolo

    • Questo argomento è stato modificato 3 anni, 3 mesi fa da  medariox.
    • Questo argomento è stato modificato 1 anno, 8 mesi fa da  Cristiano Zanca.
Stai vedendo 15 repliche - dal 1 al 15 (di 21 totali)
  • Ciao 2CAN,

    che tipo di hosting hai? È possibile che la macchina su cui sei ospitato abbia impostato il locale in inglese.

    Poi, giusto per precisione, la variabile WPLANG non viene più utilizzata, fa fede l’impostazione del linguaggio che trovi in “Impostazioni->Generali”, in basso.

    G

    Ciao Giustino, grazie della risposta.
    anche a me era venuto il dubbio che le date venissero tirare fuori da funzioni php quindi che centrasse il locale.
    come hosting ci affidiamo ad un’azienda qui sopra i nostri uffici, hanno server dedicati. però so già per certo che ospitano altri siti sullo stesso server. si può andare a settare singolarmente per sito?

    Grazie per la precisazione, in impostazioni generali c’è già impostato italiano, WPLANG l’ho messa per abitudine… se ormai è deprecata non la metterò più 😉

    Moderatore medariox

    (@medariox)

    Per quanto ne so io, WordPress non dovrebbe usare delle funzioni PHP per le date. Sei sicuro di avere tutti i file necessari per la traduzione? Oltre al file it_IT.po, dovresti anche avere it_IT.mo nella stessa cartella.

    si, ho anche i .mo

    aprendo le pagine del tema credo che la parte che tira fuori la data sia questa

    $start_date = get_post_meta( $event_id, BMT_PREFIX . 'start_date', true );
    if ( $start_date ) {
    	$tmp = new DateTime( $start_date );
    	$start_date = date_format( $tmp, get_option( 'date_format' ) );
    	$start_date_cd = get_post_meta( $event_id, BMT_PREFIX . 'start_date', true );
    }
    else{
    	$start_date = get_the_date( $event_id );
    	$start_date_cd = get_the_date( 'Y/m/d', $event_id );
    }
    • Questa risposta è stata modificata 3 anni, 3 mesi fa da  Dennis Ploetner. Ragione: code in tags

    Grazie per il codice… così tutto è un po’ più chiaro. WordPress non usa i locale del sistema (#17268) quindi le righe

    $tmp = new DateTime( $start_date );
    $start_date = date_format( $tmp, get_option(‘date_format’) );

    non tornano probabilmente il valori aspettati. Secondo me dovrebbe essere sostituito con il seguente codice:

    $start_date = date_i18n( get_option( 'date_format' ), time() );

    • Questa risposta è stata modificata 3 anni, 3 mesi fa da  Dennis Ploetner.

    grande funziona!
    quindi chi ha fatto il tema avrebbe dovuto usare date_i18n?? adesso provo ad usarlo in tutte le pagine dove ho questi problemi… quindi mi tocca ricercare a manina dove vengono tirate fuori le funzioni.

    oppure c’è un metodo “generale” per forzare la cosa?

    ah no allora non funziona giusto ma perchè giustamente tira fuori la data odierna, come posso fare a passare la data settata in $tmp?

    Purtroppo no … ti tocca a controllare il theme 😉

    Se hai un $startdate potresti usare quello invece di usare time()… Quindi

    $start_date = date_i18n( get_option( 'date_format' ), $tmp );

    • Questa risposta è stata modificata 3 anni, 3 mesi fa da  Dennis Ploetner.
    • Questa risposta è stata modificata 3 anni, 3 mesi fa da  Dennis Ploetner.

    sto facendo delle prove, non conoscendo bene php sicuramente sbaglio la sintassi

    ora fa così

    $tmp = new DateTime( $start_date );
    $start_date = date_format( $tmp, get_option(‘date_format’) );
    

    se metto

    $start_date = date_i18n( get_option( 'date_format' ), time() );

    tira fuori la data odierna.

    Se metto

    $start_date = date_i18n( get_option( 'date_format' ), $tmp );

    da errore

    • Questa risposta è stata modificata 3 anni, 3 mesi fa da  Dennis Ploetner. Ragione: Code in ticks please

    Hai provato?

    $tmp = new DateTime( $start_date );
    $start_date = date_i18n( get_option( 'date_format' ), $tmp );
    • Questa risposta è stata modificata 3 anni, 3 mesi fa da  Dennis Ploetner.

    c’è qualcosa di diverso che non vedo nel codice che hai messo te, o ci stavamo scrivendo insieme (mi pare che nel messaggio sopra avevo scritto proprio come te)

    Se mettiamo tutto il codice insieme …

    $start_date = get_post_meta( $event_id, BMT_PREFIX . 'start_date', true );
    if ( $start_date ) {
    	$tmp = new DateTime( $start_date );
    	$start_date = date_i18n( get_option( 'date_format' ), $tmp );
    	$start_date_cd = get_post_meta( $event_id, BMT_PREFIX . 'start_date', true );
    }
    else{
    	$start_date = get_the_date( $event_id );
    	$start_date_cd = get_the_date( 'Y/m/d', $event_id );
    }

    scusa, la pagina alla fine era un’altra e il codice è praticmaente uguale, cambia solo come tira fuori event_id. il codice è così

    $start_date = get_post_meta(get_the_id(), BMT_PREFIX . 'start_date', true);
        if($start_date){
            $tmp = new DateTime( $start_date );
            //$start_date = date_format($tmp, get_option('date_format'));
    		$start_date = date_i18n( get_option( 'date_format' ), $tmp );
            $start_date_cd = get_post_meta(get_the_id(), BMT_PREFIX . 'start_date', true);
        }else{
            $start_date = get_the_date(get_the_id());
            $start_date_cd = get_the_date( 'Y/m/d', get_the_id() );
        }

    ho provato a commentare e a mettere $temp

    risultato: al posto di scrivere 24 JULY 2015 nelle 2 zone dove dev emostrarlo, in una non la mostra proprio, nell’altra scrive 25/06/2015

    allego immagine, a sx codice originale, a dx modificato

    2can.it/download/print.jpg

    (grazie dell’aiuto sto uscendo di testa)

    • Questa risposta è stata modificata 3 anni, 3 mesi fa da  medariox.
    Moderatore medariox

    (@medariox)

    Non puoi usare un oggetto in date_i18n, devi prima convertire $tmp in timestamp (integer).
    Prova così:

    $start_date = 
    date_i18n( get_option( 'date_format' ), $tmp->getTimestamp() );

    Ricorda di mettere il codice tra “code” in futuro, grazie!

    • Questa risposta è stata modificata 3 anni, 3 mesi fa da  medariox.
    • Questa risposta è stata modificata 3 anni, 3 mesi fa da  medariox.

    Credo che devi ancora settare il formato delle date (negli options di WordPress) per cambiare l’output d/m/Y a d/F/Y. Se questo è un problema potresti anche usare date_i18n in questo modo:

    $start_date = date_i18n( 'd/F/Y', $tmp->getTimestamp() );

    • Questa risposta è stata modificata 3 anni, 3 mesi fa da  Dennis Ploetner. Ragione: Of course we need a timestamp here
Stai vedendo 15 repliche - dal 1 al 15 (di 21 totali)
  • Il topic ‘[SOLVED] Traduzione mesi’ è chiuso a nuove risposte.