Localizza l'ora corrente in PHP
-
07-07-2019 - |
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.
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
-
cd / usr / share / locales
-
sudo ./install-language_pack ru_RU
-
sudo dpkg-reconfigure locales
- 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.