Gracias a Rico Neitzel por la pista. En lugar de intentar formatear la fecha php, use strftime. Para ver las 3 primeras letras del nombre del mes en su idioma (Ex Dez en lugar de Dism por Dezembro y no diciembre.), Siga las instrucciones de la configuración regional de Instalación de arriba, y luego:
fecha de comando: Fecha ('d M Y ') // imposible cambiar de Inglés
setlocale(LC_ALL, "pt_BR"); // Portuguese, replace with your locale
echo strftime('%e %b %G');
result: "4 Dez 2016"
/**
* datelo funcion (date with locale)
* Credits: Sergio Abreu
* http://sites.sitesbr.net
* NOTE: Depend on availability of the locale in server.
*
*/
function datelo($str, $locale='en_US', $time=null){
if($time === null){ $time = time(); }
if (preg_match("/[DlFM]/", $str)){
setlocale(LC_ALL, $locale);
$dict = array('d'=>'%d', 'D'=>'%a', 'j'=>'%e', 'l'=>'%A', 'N'=>'%u', 'w'=>'%w', 'F'=>'%B',
'm'=>'%m', 'M'=>'%b', 'Y'=>'%G', 'g'=>'%l', 'G'=>'%k', 'h'=>'%I', 'H'=>'%H', 'i'=>'%M',
's'=>'%S', 'S'=>'', 'z'=>'%j', 'n'=>'%m', ' '=>' ', '-'=>'-', '/'=>'/', ':'=>':', ','=>',');
$chars = preg_split("//", $str);
$nstr = '';
foreach ($chars as $c){
if ($c){ //skip empties
$nc = $dict[$c];
if($c === 'n'){ // Fixes the extra zero
$nc = preg_replace("/^0+/", '', strftime($nc));
}
elseif($c === 'z'){ // Fixes the extra zero and decrease 1
$nc = preg_replace("/^0+/", '', strftime($nc)); // 023 turns 23
$nc = intval($nc) - 1;
}
$nstr .= $nc;
}
}
return strftime($nstr);
}else{ // not localized
return date($str, $time);
}
}
¿Has probado otras versiones de la configuración regional alemana, por ejemplo 'setlocale (LC_ALL, 'de_DE @ euro', 'de_DE', 'de', 'ge');'? –
Debe verificar si el cambio de idioma fue exitoso al examinar el valor de retorno de 'setLocale' – velop