Visualizzazione dei risultati da 1 a 8 su 8

Discussione: get_date in italiano

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    89

    get_date in italiano

    Ciao a tutti,
    in una pagina php/html ho inserito una data che viene ogni volta richiesta ad un feed tramite un get_date('l j F Y'). Attualmente ottengo "Saturday 11 December 2010", per avere questa data in italiano cosa posso fare?

    Oltre a questo vi chiedo anche un'altra cosa: in generale, indipendentemente dalla data (per la quale probabilmente esiste una soluzione più rapida) se ottengo da un feed un determinato messaggio come posso sostituirlo con un altro testo (traduzione) da me precedentemente impostato (ovviamente avendo prima una lista dei possibili messaggi e delle rispettive traduzioni)?
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Probabilmente stai utilizzando SimplePie. Vedi l'esempio per get_local_date().

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    89
    Grazie Grino,
    effettivamente sto usando SimplePie, ma se utilizzo la funzione get_local_date() ottengo un "Fatal error: Call to undefined method SimplePie_YWeather_Forecast::get_local_date()"....

    In ogni caso, in generale, come posso sostituire degli elementi con altri predefiniti (in questo caso, per esempio, se con la richiesta get_date ottengo "Saturday 11 December 2010" come posso trasformare questa risposta nella sua traduzione)?
    Grazie molte

  4. #4
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Scarica una versione più recente di simplepie. la funzione get_local_date è disponibile dalla 1.0, quindi stai utilizzando una beta.

    get_local_date utilizza strftime, quindi prima della chiamata a questo metodo puoi impostare la lingua con cui ti risponde con setlocale di php come mostrato nell'esempio del manuale
    Returns the date/timestamp of the posting in the localized language. Date format supports anything that works with PHP's strftime() function. To display in other languages, you need to change the locale with PHP's setlocale() function. The available localizations depend on which ones are installed on your web server.
    Codice PHP:
    setlocale(LC_TIME'it');
     
    $feed = new SimplePie();
    $feed->set_feed_url('http://simplepie.org/blog/feed/');
    $feed->init();
    $feed->handle_content_type();
     
    foreach (
    $feed->get_items() as $item)
    {
        echo 
    $item->get_local_date('%A %e %B %Y');

    get_date invece ti ritorna solo dati in lingua inglese come spiegato nel manuale
    Returns the date/timestamp of the posting. Date format supports anything that works with PHP's date() function. Only supports the English language.
    Se poi vuoi partire dalla stringa in inglese puoi creare un array con i nomi dei giorni in inglese e un altro con i nomi dei mesi ed altri due con le traduzioni in italiano, quindi in un ciclo fai la str_replace del nome in inglese con quello in italiano
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    89
    Grazie per la risposta: io al momento sto usando Simple Pie 1.1.1 perché è perfettamente compatibile con il plugin Simple Pie che sto usando (che invece con SimplePie 1.2 crea qualche problema...).....
    Tutto sommato a me basterebbe ottenere la data odierna e di domani in italiano, quindi utilizzerei questo codice:

    Codice PHP:
    <?php $oggi mktime(0,0,0,date("m"),date("d"),date("Y")); echo "Oggi ".date("Y/m/d"$domani); ?> <?php $domani mktime(0,0,0,date("m"),date("d")+1,date("Y")); echo "Domani ".date("Y/m/d"$domani); ?>

    I parametri che io vorrei sono l j F Y, completando però il codice in questo modo:

    Codice PHP:
    <?php $oggi mktime(0,0,0,date("l"),date("j"),date("F"),date("Y")); echo "Oggi ".date("l j F Y"$domani); ?> <?php $domani mktime(0,0,0,date("l")+1,date("j")+1,date("F"),date("Y")); echo "Domani ".date("l j F Y"$domani); ?>
    Ottengo però questi errori: Warning: mktime() expects parameter 4 to be long
    Notice: Undefined variable

    Consigli? Grazie mille

  6. #6
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Questo
    Codice PHP:
    <?php
    // il %#d funziona sotto windows in linux è %e

    setlocale(LC_TIME"nld");

    $t1=strftime("%A %#d %B %Y"time());
    $t2=strftime("%A %#d %B %Y"time()+(24*60*60));
    echo 
    "Oggi: $t1
     Domani: 
    $t2

    "
    ;


    setlocale(LC_TIME"ita");

    $t1=strftime("%A %#d %B %Y"time());
    $t2=strftime("%A %#d %B %Y"time()+(24*60*60));
    echo 
    "Oggi: $t1
     Domani: 
    $t2

    "
    ;

    ?>
    produce questo

    codice:
    Oggi: maandag 13 december 2010
    Domani: dinsdag 14 december 2010
    
    Oggi: lunedì 13 dicembre 2010
    Domani: martedì 14 dicembre 2010
    Attenzione, il %#d funziona solo sotto windows. In ambiente linux si utilizza %e. Sul manuale propongono questo codice cross platform
    Codice PHP:
    <?php

    $format 
    '%e';

    // Check for Windows and only attempt to replace 
    // the %e modifiers if they exists in the format
    if (strtoupper(substr(PHP_OS03)) == 'WIN' && strpos($format'%e') !== false) {
        
    $format str_replace('%e''%#d'$format);
    }

    echo 
    strftime($format);
    ?>
    infine se te la vuoi cavare rapidamente al posto di %e o %#d puoi utilizzare %d per tutto. La differenza sta nel fatto che mentre con %e hai i giorni da 1 a 31 con %d li hai da 01 a 31.
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    89
    Perfetto, ho usato il codice cross platform e a questo punto i dati che mi servivano ci sono tutti. Ottimo. Ora direi che rimane solo un piccolo problema di decodifica: gli accenti sono sostituiti da dei �...
    La codifica della pagina html è:
    content="text/html; charset=utf-8"
    Grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    89
    Alla fine ho risolto impostando il charset=ISO-8859-1"... Non dovrebbero esserci problemi, no? Mi pare che vada tutto bene....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.