Localize aktuelle Zeit in PHP
-
07-07-2019 - |
Frage
Der Versuch, mit PHP aktuelle Uhrzeit angezeigt werden (unter Verwendung von dieses ) :
$date = date('m/d/Y h:i:s a', time());
echo $date;
So einfach wie es nur geht. Wie kann ich sie lokalisieren? Ich möchte die Monate und Tage auf Hebräisch übersetzen.
Danke.
Lösung
Zend_Date
ist vollständig internationalisiert. Sie sollten überprüfen, dass für einen einfachen Ausweg, es zu tun:
Alle vollen und abgekürzten Namen Monate und Wochentage werden unterstützt für mehr als 130 Sprachen. Methods unterstützt sowohl Eingang und den Ausgang des unter Verwendung von Daten, um die lokalisierten Namen Monate und Wochentage, in der konventionelles Format zugeordnet sind jede locale.
Andere Tipps
Tatsächlich, ich glaube nicht, es durchaus möglich ist, in PHP 5.2: - (
Zumindest nicht mit dem, was mit / in PHP gebündelt ist (Es gibt Bibliotheken in PHP codiert, die Sie verwenden können, obwohl, wie andere Antworten darauf hingewiesen)
Mit PHP 5.3, obwohl, haben Sie die IntlDateFormatter Klasse, das ist genau das tut, was Sie wollen:
Diese Klasse stellt das ICU Datum Formatierungsfunktionen. Es erlaubt Benutzer Daten in einer lokalisierten anzuzeigen formatieren oder zu analysieren Strings in PHP Datumswerte Muster Strings und / oder in Dosen Muster.
Zum Beispiel dieser Klasse verwendet wird, wie folgt aus:
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";
Sie würden erhalten:
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
Welche ganz schön aussieht, nicht wahr?
Traurige ist PHP 5.3 ist nur ein paar Monate alt, und nicht auf vielen Hosting-Services ... Und wird getestet werden müssen (und wahrscheinlich fixiert) für Ihre Anwendung ...
Denken Sie daran: Vielleicht können Sie die PECL intl Erweiterung auf PHP 5.2, obwohl installieren und erhalten die gleiche functionnality ...
Wenn Sie eine einfache Art und Weise als Zend_Date und IntlDateFormatter versuchen, den Standard strftime
Funktion in PHP. Hier ist das, was ich tat, um es nach oben und mit der russischen Sprache mit PHP 5.3 auf Ubuntu (Russian locale wurde nicht installiert ist).
locale installieren
-
cd /usr/share/locales
-
sudo ./install-language_pack ru_RU
-
sudo dpkg-reconfigure locales
- Starten Sie Apache
Als nächstes verwenden Sie den folgenden PHP-Code-Schnipsel:
setlocale(LC_TIME, 'ru_RU.UTF-8');
echo strftime('%A', time());
Sollte Ausgang heutigen Tag der Woche.