2009-08-25 3 views
16

Tengo una secuencia de comandos que debe mostrar los datos de fecha a una audiencia internacional, por ej.Fecha de PHP() en idiomas extranjeros, p. Ej. 25 de marzo Aoû 09

"presentado mar 25 Ago 09"

¿Existe una manera más fácil/más limpio para conseguir esto convierte a los franceses (etc) equivalente "mar 25 de AOU 09" que:

Ajuste una constante LANG y una matriz $LANGUAGES de archivos de inclusión &:

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

& entonces el In cluded file maps los días & meses & reemplaza para la configuración regional adecuada?

Gracias

David

+0

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

Respuesta

37

creo que no se puede escapar de hacerlo sin configuración local:

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

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

Algunos detalles sobre strftime: http://us2.php.net/manual/en/function.strftime.php

+4

Esta es la correcta/PHP forma de manejar la configuración regional en cadenas de fechas. 'strftime()' es preferible a 'date()' cuando necesita contar la configuración regional. – dcousineau

+2

no funciona para mí :(https://eval.in/189841 – Vikram

+0

El código anterior no funcionará en Windows ya que el parámetro '% e' no funciona en Windows como se indica en los documentos. Tiene que hacer una comprobación adicional, ejemplo se muestra en ** Ejemplo # 3 Ejemplo compatible con plataforma cruzada usando el modificador% e ** de [strftime() documentos] (http://us2.php.net/manual/en/function.strftime .php) – Stan

5

De acuerdo con la date página de manual de funciones, debe usar setlocale. Métodos como strftime utilizarán la configuración regional especificada. date, sin embargo, no será por alguna razón.

0

Es posible que también desee echar un vistazo a Zend_Date.

+1

Su enlace muestra el error 404. – Soaku

+0

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

1

Creo que la mejor manera de hacerlo es con strftime y setlocale funciones. Pero no funcionará si su servidor no tiene instalada la configuración regional necesaria (en las preguntas actuales es fr_FR).

Código de abajo una excepción si el cambio local no tendrá éxito

<?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"); 
Cuestiones relacionadas