2009-08-25 11 views
16

Mam skrypt, który musi wyświetlać dane dotyczące daty międzynarodowej publiczności - np.PHP date() w językach obcych - np. Mar 25 Aoû 09

"złożony Wto 25 sierpnia 09"

Czy istnieje prostszy/czystszy sposób, aby uzyskać ten przekształca się w języku francuskim (ETC) równoważne "25 marca AOU 09" niż:

Otoczenie stałe LANG i $LANGUAGES szereg plików dołączanych &:

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

& następnie w dołączone mapy plików dni & miesięcy & zastępuje dla odpowiednich ustawień narodowych?

Dzięki

David

+0

Zobacz http://stackoverflow.com/questions/1114488/php-date-function-output-in-italian –

Odpowiedz

37

Myślę, że nie można uciec od tego bez ustawienia regionalne:

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

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

kilka szczegółów na strftime: http://us2.php.net/manual/en/function.strftime.php

+4

To jest poprawna/PHP sposób obsługi ustawień narodowych w łańcuchach dat. Opcja 'strftime()' jest preferowana w stosunku do 'date()', gdy musisz uwzględnić ustawienia narodowe. – dcousineau

+2

to nie działa dla mnie :(https://eval.in/189841 – Vikram

+0

Powyższy kod nie będzie działał w systemie Windows, ponieważ parametr '% e' nie działa w systemie Windows, jak podano w dokumentach. dodatkowy sprawdzian, przykład jest pokazany pod ** Przykład # 3 Przykład kompatybilny z platformą, korzystający z modyfikatora% e ** dokumentacji [strftime()] (http://us2.php.net/manual/en/function.strftime .php) – Stan

5

według date stronę podręcznika funkcji, należy użyć setlocale. Metody takie jak strftime będą następnie używać określonych ustawień narodowych. date, jednak nie będzie z jakiegoś powodu.

0

Możesz również chcieć rzucić okiem na Zend_Date.

+1

Twój link pokazuje błąd 404. – Soaku

+0

https://framework.zend.com/manual/1.11/en/zend.date.html –

1

Myślę, że najlepiej to zrobić z funkcjami strftime i setlocale. Ale to nie zadziała, jeśli twój serwer nie ma potrzebnych ustawień regionalnych (w bieżących pytaniach jest to fr_FR).

Kod myszki następnie wyjątek czy zmiana ustawień regionalnych będzie nieskuteczne

<?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"); 
Powiązane problemy