PHP date () на иностранных языках - например, 25 марта 2009 г. - PullRequest
19 голосов
/ 25 августа 2009

У меня есть скрипт, который должен отображать данные о дате для международной аудитории - например,

"отправлено вт 25 авг 09"

Существует ли более простой / чистый способ преобразовать его во французский (и т. Д.) Эквивалент «25 марта 2009 г.», чем:

Установка константы LANG и $LANGUAGES массива включаемых файлов &:

if(LANG != 'EN')
{
include $LANGUAGES['LANG'];
}

& затем включенный файл отображает дни и месяцы и заменяет соответствующий языковой стандарт?

Спасибо

David

Ответы [ 4 ]

43 голосов
/ 25 августа 2009

Я думаю, что вы не можете избежать этого без установки LOCALE:

<?php
setlocale(LC_ALL, 'fr_FR');

echo strftime("%A %e %B %Y");
?> 

Некоторые подробности о strftime: http://us2.php.net/manual/en/function.strftime.php

5 голосов
/ 25 августа 2009

В соответствии со страницей руководства функции date следует использовать setlocale. Методы, такие как strftime, будут затем использовать указанную локаль. date, однако, по какой-то причине не будет.

2 голосов
/ 11 июля 2017

Я думаю, что лучший способ сделать это с функциями 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"); 
0 голосов
/ 25 августа 2009

Возможно, вы захотите взглянуть на Zend_Date .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...