Domanda

Tentativo di visualizzare l'ora corrente con PHP (utilizzando this ) :

$date = date('m/d/Y h:i:s a', time());                      
echo $date;

Semplice come si arriva. Come lo localizzo? Voglio tradurre i mesi e i giorni in ebraico.

Grazie.

È stato utile?

Soluzione

Zend_Date è completamente internazionalizzato. Dovresti verificarlo per un modo semplice per farlo:

  

Tutti i nomi completi e abbreviati di   mesi e giorni feriali sono supportati per   più di 130 lingue. metodi   supporta sia l'input che l'output di   date usando i nomi localizzati di   mesi e giorni feriali, nel   formato convenzionale associato a   ogni locale.

Altri suggerimenti

In realtà, non credo sia del tutto possibile in PHP 5.2 :-(

Almeno, non con ciò che è in bundle con / in PHP (Ci sono librerie codificate in PHP che potresti usare, tuttavia, come altre risposte sottolineate)


Con PHP 5.3, tuttavia, hai la classe IntlDateFormatter , che fa esattamente ciò che vuoi:

  

Questa classe rappresenta la data dell'ICU   funzionalità di formattazione. Permette   gli utenti per visualizzare le date in un localizzato   formattare o analizzare le stringhe in PHP   valori di data usando stringhe di pattern   e / o schemi fissi.

Ad esempio, usando quella classe, in questo modo:

echo IntlDateFormatter::create('fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('fr_FR', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";

echo IntlDateFormatter::create('zh-Hant-TW', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('zh-Hant-TW', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";

echo IntlDateFormatter::create('en_US', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('en_US', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";

Otterrai:

dimanche 9 novembre 2008 23:54:47 GMT+00:00
9 nov. 2008 23:54
2008年11月9日星期日 下午11時54分47秒 GMT+00:00
2008/11/9 下午 11:54
Sunday, November 9, 2008 11:54:47 PM GMT+00:00
Nov 9, 2008 11:54 PM

Che sembra piuttosto carino, vero?

La cosa triste è che PHP 5.3 ha solo pochi mesi e non è disponibile su molti servizi di hosting ... E richiederà test (e probabilmente correzioni) per la tua applicazione ...


Pensandoci: forse puoi installare estensione intl PECL su PHP 5.2, tuttavia, e ottenere la stessa funzionalità ...

Se hai bisogno di un modo più semplice di Zend_Date e IntlDateFormatter prova la funzione standard strftime in php. Ecco le cose che ho fatto per farlo funzionare con la lingua russa con php 5.3 su Ubuntu (la localizzazione russa non è stata installata).

Per installare le impostazioni internazionali

  1. cd / usr / share / locales
  2. sudo ./install-language_pack ru_RU
  3. sudo dpkg-reconfigure locales
  4. Riavvia Apache

Successivamente, usa il seguente frammento di php:

setlocale(LC_TIME, 'ru_RU.UTF-8');
echo strftime('%A', time());

Dovrebbe essere pubblicato il giorno della settimana di oggi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top