Ответ 1
Я думаю, вы не можете уйти от этого, не устанавливая LOCALE:
<?php
setlocale(LC_ALL, 'fr_FR');
echo strftime("%A %e %B %Y");
?>
Некоторые сведения о strftime: http://us2.php.net/manual/en/function.strftime.php
У меня есть script, который должен отображать данные даты международной аудитории - например,
"отправлено Вт 25 авг. 09"
Есть ли более простой/чистый способ получить это преобразование во французском (и т.д.) эквиваленте "Mar 25 Aoû 09", чем:
Установка константного массива LANG
и $LANGUAGES
включенных файлов и:
if(LANG != 'EN')
{
include $LANGUAGES['LANG'];
}
& то включенный файл отображает дни и месяцы и заменяет соответствующий язык?
Спасибо
Дэвид
Я думаю, вы не можете уйти от этого, не устанавливая LOCALE:
<?php
setlocale(LC_ALL, 'fr_FR');
echo strftime("%A %e %B %Y");
?>
Некоторые сведения о strftime: http://us2.php.net/manual/en/function.strftime.php
В соответствии с date
справочной страницей функции, вы должны использовать setlocale
. Затем методы, такие как strftime
, будут использовать указанный локаль. date
, однако, по какой-то причине не будет.
Вы также можете посмотреть Zend_Date.
Я думаю, что лучший способ сделать это с помощью функций strftime
и setlocale
. Но это не сработает, если на вашем сервере нет нужного языкового стандарта (в текущих вопросах это fr_FR
).
Нижеприведенный код генерирует исключение, если изменение локали будет неудачным.
<?php
$result = setlocale(LC_ALL, 'fr_FR');
if($result === false){
throw new \RuntimeException(
'Got error changing locale, check if locale is installed on the system'
);
}
$dayOfMonth = '%e';
//if it is Windows we will use %#d as %e is not supported
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$dayOfMonth = '%#d';
}
//Mar 25 Aoû 09 - month shortname, day of month, day shortname, year last two digits
echo strftime("%b $dayOfMonth %a %y");