Search

PHP a lokalizace – 2 způsoby, jak zobrazit datum v českém jazyce

Obsah

Motivace k použití lokalizace

Při programování informačních systémů, blogů nebo webových aplikací se setkáme s nutností zobrazovat datumy. Může se například jednat o datum vytvoření příspěvku, úpravu uživatelského účtu, poslední přihlášení uživatele nebo u e-shopů datm vyřízení objednávky. Pokud se rozhodneme nezobrazovat datum pouze jako číselný údaj, může se nám stát, že názvy měsíců nebo dní zobrazíme typicky v angličtině.

Lokalizaci je možné udělat buď v konfiguračním souboru php.ini nebo případně rovnou v kódu, což má tu výhodu, že k „překladu“ dojde až ve chvíli spuštění kódu. Toto použití si dokážu představit např. ve vícejazyčné aplikaci, kde se na základě přihlášeného uživatele a jeho nastavení bude zobrazovat datum v příslušném jazyku.

Instalace PHP knihovny intl

Předpokladem tohoto řešení je, že máte nainstalovanou knihovnu intl (international).

sudo apt install php8.2-intl

nebo bez verze PHP

sudo apt install php-intl

Případně si můžete nainstalovat i další knihovny, které jsou v návodu PHP dev stack.

Způsob #1

Ukázka kódu s českým jazykem

Následující kód nám zobrazí aktuální den v českém jazyce.

// EEEE = day of week in full name
$formatter = IntlDateFormatter::create(locale: 'cs_CZ', pattern: 'EEEE');

$cal = new DateTime();
echo $formatter->format($cal);

Locale

Pro nastavení lokalizace se používá POSIXový standard, v případě češtiny tedy cs_CZ nebo en_US pro americkou angličtinu.

Pattern

Pokud budete chtít zobrazit něco jiného než den, tak se využívá mezinárodního standardu ISO 8601. Výčet všech možných symbolů pro argument pattern.

Procvičování

  1. (jednoduché) Definujte pole stringů $locales a zobrazte ve foreach cyklu datumy pro vybrané lokalizace.
  2. (složitější) Vytvořte rozbalovací seznam s možnými „locales“ a po odeslání formuláře ukládejte do $_SESSION vybranou locale a zobrazte datum v záhlaví napříč celým webem – např. index.php, contact.php, abous-us.php settings.php .
  3. Vyzkoušejte knihovnu intl i pro zobrazování cenovek – např. 5999 Kč pomocí NumberFormatter

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

Skip to content