Вопрос

Попытка отобразить текущее время с помощью PHP (используя это):

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

Настолько просто, насколько это возможно.Как мне его локализовать?Я хочу перевести месяцы и дни на иврит.

Спасибо.

Это было полезно?

Решение

Zend_Date полностью интернационализирован.Вы должны проверить это, чтобы найти простой способ сделать это:

Все полные и сокращенные названия месяцев и дней недели поддерживаются для более чем 130 языков.Методы поддерживают как ввод, так и вывод дат, используя локализованные названия месяцев и дней недели, в обычном формате, связанном с каждой локализацией.

Другие советы

На самом деле, я не думаю, что это вполне возможно в PHP 5.2 :-(

По крайней мере, не с тем, что поставляется в комплекте с / в PHP (Однако, как и в других ответах, существуют библиотеки, закодированные на PHP, которые вы могли бы использовать)


Однако с PHP 5.3 у вас есть Внутренний форматировщик класс, который делает именно то, что вы хотите :

Этот класс представляет дату отделения интенсивной терапии функциональность форматирования.Это позволяет пользователям отображать даты в локализованном формате или анализировать строки в PHP значения даты с использованием строк шаблонов и / или готовых шаблонов.

Например, используя этот класс, вот так :

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";

Вы бы получили :

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

Что выглядит довольно мило, не так ли ?

Печально то, что PHP 5.3 всего несколько месяцев, и он недоступен на многих хостинговых сервисах...И потребует тестирования (и, возможно, исправлений) для вашего приложения...


Думая об этом :может быть, вы сможете установить Расширение PECL intl на PHP 5.2, однако, и получите ту же функциональность...

Если вам нужен более простой способ, чем Zend_Date и IntlDateFormatter, попробуйте стандартный strftime функция в php.Вот что я сделал, чтобы запустить его с русским языком под управлением php 5.3 в Ubuntu (русская локаль не была установлена).

Для установки локали

  1. cd /usr/share/locales
  2. sudo ./install-language_pack ru_RU
  3. sudo dpkg-reconfigure locales
  4. Перезапустить Apache

Затем используйте следующий фрагмент php:

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

Следует вывести сегодняшний день недели.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top