Mam to zapytanie MySQL, które zwraca dwie daty (które są oba sformatowane jako a-m-Y). Teraz chcę przetłumaczyć tę datę na mój własny język (język duński). Jak mogę to zrobić. Próbowałem już zarówno funkcji setlocale(), jak i strftime(), ale to nie zadziała. Wiem, że to bardzo podstawowe pytanie, ale naprawdę potrzebuję pomocy. Wielkie dzięki!Zmień język dla daty w php
Odpowiedz
Nie sądzę, że funkcja date()
jest wystarczająco rozwinięta dla ciebie.
Zamiast tego, polecam spojrzeć w klasie IntlDateFormatter
(cytując):
Data Formatter jest beton klasy, która umożliwia zależne od ustawień lokalnych formatowania/parsowanie daty z użyciem wzorów sznurkowych i/lub konserwy wzorów.
Istnieje kilka przykładów na ręcznym stronie IntlDateFormatter::format()
, gdzie ta metoda służy do wyświetlania daty w dwóch różnych językach, po prostu ustawiając żądaną lokalizacyjnych.
1. dołączane do PHP> = 5,3
Zastosowanie setlocale
i strftime
razem:
setlocale(LC_TIME, array('da_DA.UTF-8','[email protected]','da_DA','danish'));
echo strftime("%A"); // outputs 'tirsdag'
działa na moim instalacji PHP na Windows.
Zastosowanie
http://php.net/manual/en/function.strftime.php
<?php
setlocale(LC_ALL, 'da_DA');
echo strftime("%A %e %B %Y");
?>
Jeśli próbujesz konwertować datetime
spróbuj tego:
$fecha = $dateConsulta->format('d-M-Y');
$fecha = str_replace('Jan','Ene',$fecha);
$fecha = str_replace('Apr','Abr',$fecha);
$fecha = str_replace('Aug','Ago',$fecha);
$fecha = str_replace('Dec','Dic',$fecha);
stwierdziliśmy, że setlocale
nie są wiarygodne, ponieważ jest on ustawiony na proces , a nie na wątek (w podręczniku wspomniano o tym). Oznacza to, że inne uruchomione skrypty mogą w każdej chwili zmienić ustawienia narodowe. Rozwiązaniem jest użycie IntlDateFormatter z rozszerzenia php intl
.
Install
intl
jeśli necesarry (ubuntu):sudo apt-get install php5-intl
Instalacja locale chcesz użyć (używam włoski jako przykład):
sudo locale-gen it_IT
Generowanie lokalnie sformatowaną datę :
$fmt = new \IntlDateFormatter('it_IT', NULL, NULL);
$fmt->setPattern('d MMMM yyyy HH:mm');
// See: http://userguide.icu-project.org/formatparse/datetime for pattern syntax
echo $fmt->format(new \DateTime());
// Output: 6 gennaio 2016 12:10
Tha t wygląda na skomplikowaną: D, okej, przyjrzę się temu. Nie mogę zrozumieć, że zmiana języka może być trudna :) – Emil
Cóż, musisz mieć "coś", co może wygenerować ciąg w odpowiednim języku - co oznacza znajomość słów, ich kolejności, ... i to nie jest łatwe zadanie. –