Skip to content

Commit 2c4da2f

Browse files
committed
latte 3.0.18
1 parent 2226b07 commit 2c4da2f

File tree

2 files changed

+89
-6
lines changed

2 files changed

+89
-6
lines changed

latte/cs/develop.texy

+16
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,22 @@ try {
166166
```
167167

168168

169+
Národní prostředí .{data-version:3.0.18}{toc: Locale}
170+
=====================================================
171+
172+
Latte umožňuje nastavit národní prostředí, které ovlivňuje formátování čísel, datumů a řazení. Nastavuje se pomocí metody `setLocale()`. Identifikátor prostředí se řídí standardem IETF language tag, který používá rozšíření PHP `intl`. Skládá se z kódu jazyka a případně kódu země, např. `en_US` pro angličtinu ve Spojených státech, `de_DE` pro němčinu v Německu atd.
173+
174+
```php
175+
$latte = new Latte\Engine;
176+
$latte->setLocale('cs');
177+
```
178+
179+
Nastavení prostředí ovlivňuje filtry [localDate|filters#localDate], [sort|filters#sort], [number|filters#number] a [bytes|filters#bytes].
180+
181+
.[note]
182+
Vyžaduje PHP rozšíření `intl`. Nastavení v Latte neovlivňuje globální nastavení locale v PHP.
183+
184+
169185
Striktní režim .{data-version:3.0.8}
170186
====================================
171187

latte/cs/filters.texy

+73-6
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ V šablonách můžeme používat funkce, které pomáhají upravit nebo přefor
1111
| `bytes` | [formátuje velikost v bajtech |#bytes]
1212
| `clamp` | [ohraničí hodnotu do daného rozsahu |#clamp]
1313
| `dataStream` | [konverze pro Data URI protokol |#datastream]
14-
| `date` | [formátuje datum |#date]
14+
| `date` | [formátuje datum a čas|#date]
1515
| `explode` | [rozdělí řetězec na pole podle oddělovače |#explode]
1616
| `first` | [vrací první prvek pole nebo znak řetězce |#first]
1717
| `group` | [seskupí data podle různých kritérií |#group]
@@ -20,6 +20,7 @@ V šablonách můžeme používat funkce, které pomáhají upravit nebo přefor
2020
| `join` | [spojí pole do řetězce |#implode]
2121
| `last` | [vrací poslední prvek pole nebo znak řetězce |#last]
2222
| `length` | [vrací délku řetězce ve znacích nebo pole |#length]
23+
| `localDate` | [formátuje datum a čas|#localDate]
2324
| `number` | [formátuje číslo |#number]
2425
| `padLeft` | [doplní řetězec zleva na požadovanou délku |#padLeft]
2526
| `padRight` | [doplní řetězec zprava na požadovanou délku |#padRight]
@@ -168,7 +169,7 @@ Přidává před každý znak nového řádku HTML značku `<br>`
168169

169170
bytes(int precision = 2) .[filter]
170171
----------------------------------
171-
Formátuje velikost v bajtech do lidsky čitelné podoby.
172+
Formátuje velikost v bajtech do lidsky čitelné podoby. Pokud je nastavené [národní prostředí |develop#locale], použijí se odpovídající oddělovače desetinných míst a tisíců.
172173

173174
```latte
174175
{$size|bytes} 0 B, 10 B, …
@@ -255,13 +256,14 @@ Vyžaduje PHP rozšíření `fileinfo`.
255256

256257
date(string format) .[filter]
257258
-----------------------------
258-
Formátuje datum podle masky buď ve tvaru používaném PHP funkcí [php:strftime] nebo [php:date]. Filtr přijímá datum buď ve formátu UNIX timestamp, v podobě řetězce nebo jako objekt `DateTime`.
259+
Formátuje datum a čas podle masky používané PHP funkcí [php:date]. Filtr přijímá datum ve formátu UNIX timestamp, jako řetězec nebo objekt typu `DateTimeInterface`.
259260

260261
```latte
261-
{$today|date:'%d.%m.%Y'}
262262
{$today|date:'j. n. Y'}
263263
```
264264

265+
Viz také [#localDate].
266+
265267

266268
escapeUrl .[filter]
267269
-------------------
@@ -418,6 +420,41 @@ Vrátí délku řetězce nebo pole.
418420
```
419421

420422

423+
localDate(string format = null, string date = null, string time = null) .[filter]
424+
---------------------------------------------------------------------------------
425+
Formátuje datum a čas podle [národního prostředí |develop#locale], což zajišťuje konzistentní a lokalizované zobrazení časových údajů napříč různými jazyky a regiony. Filtr přijímá datum jako UNIX timestamp, řetězec nebo objekt typu `DateTimeInterface`.
426+
427+
**a) použití formátu**
428+
429+
Formát určuje, které časové složky se mají zobrazit. Používá pro ně písmenné kódy, jejichž počet opakování ovlivňuje šířku výstupu:
430+
431+
| rok | `y` … `yyyy` | `23` … `2023`
432+
| měsíc | `M` … `MM` … `MMM` … `MMMM` | `7` … `07` … `čvc` … `červenec`
433+
| den | `d` … `dd` | `1` … `01`
434+
| hodina | `j` | v preferovaném formátu prostředí
435+
| minuta | `m` … `mm` | `5` … `05`
436+
| sekunda | `s` … `ss` | `8` … `08`
437+
438+
Na pořadí kódů ve formátu nezáleží, protože pořadí složek se vypíše podle zvyklostí národního prostředí. Formát je tedy na něm **nezávislý**.
439+
Například formát `yyyyMMMMd` v postředí `en_US` vypíše `April 15, 2023`, zatímco v prostředí `cs_CZ` vypíše `15. dubna 2023`. Nebo `MMMM` bez dalších symbolů se vypíše jako `duben`.
440+
441+
**b) použití přednastavených stylů**
442+
443+
Parametry `date` a `time` určují úroveň detailu pro datum a čas. Možné hodnoty jsou `full`, `long`, `medium`, `short`. Lze uvést buď jen datum, jen čas, nebo obojí:
444+
445+
```latte
446+
{$date|localDate:date: full, time: short}
447+
{* Výstup (en_US): Saturday, April 15, 2023 at 2:30 PM *}
448+
{* Výstup (cs_CZ): sobota 15. dubna 2023 14:30 *}
449+
```
450+
451+
U data lze navíc použít prefix `relative-` (např. `relative-short`), který pro data blízká současnosti zobrazí `včera`, `dnes` nebo `zítra`, jinak se vypíše standardním způsobem.
452+
453+
Pokud neuvedete žádný parametr, použije se `date: long`.
454+
455+
Viz také [#date].
456+
457+
421458
lower .[filter]
422459
---------------
423460
Převede řetězec na malá písmena. Vyžaduje PHP rozšíření `mbstring`.
@@ -475,7 +512,7 @@ Neescapovaný: <b>hello</b>
475512

476513
number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter]
477514
------------------------------------------------------------------------------------
478-
Formátuje číslo na určitý počet desetinných míst. Lze určit znak pro desetinnou čárku a oddělovač tisíců.
515+
Formátuje číslo na určitý počet desetinných míst. Pokud je nastavené [národní prostředí |develop#locale], použijí se odpovídající oddělovače desetinných míst a tisíců.
479516

480517
```latte
481518
{1234.20 |number} 1,234
@@ -485,6 +522,36 @@ Formátuje číslo na určitý počet desetinných míst. Lze určit znak pro de
485522
```
486523

487524

525+
number(string mask) .[filter]
526+
-----------------------------
527+
Při aktivním [národním prostředí |develop#locale] lze číslo formátovat podle vzoru, která umožňuje přesně definovat, jak má být zobrazeno. Tvoří jej symboly, tyto jsou základní:
528+
529+
- `0` : číslice se zobrazí vždy, i když má číslo méně číslic (pak se zobrazí 0)
530+
- `#` : číslice se zobrazí, pokud na této pozici existuje
531+
- `.` : oddělovač desetinných míst dle národního prostředí
532+
- `,` : oddělovač skupin (obvykle tisíců) dle národního prostředí
533+
- `-` : znaménko minus pro záporná čísla
534+
- `@` : zajišťuje, že se zobrazí určitý počet platných číslic bez ohledu na desetinnou čárku
535+
536+
Příklady (přesný výstup závisí na nastaveném prostředí):
537+
538+
```latte
539+
{* Základní formátování *}
540+
{1234.5|number: '#,##0.00'} {* vypíše: 1,234.50 *}
541+
{1234.5|number: '#,##0.##'} {* vypíše: 1,234.5 *}
542+
543+
{* Platné číslice *}
544+
{1234.5|number: '@@@'} {* vypíše: 1230 *}
545+
{1.23456|number: '@@@'} {* vypíše: 1.23 *}
546+
547+
{* Zarovnání *}
548+
{12.3|number: '000.00'} {* vypíše: 012.30 *}
549+
{3.14|number: '##0.00*_'} {* vypíše: 3.14___ *}
550+
```
551+
552+
Tento pattern systém nabízí mnoho dalších možností formátování, včetně vědecké notace, negativních vzorů a dalších. Pro pokročilé použití doporučujeme nahlédnout do dokumentace "Unicode DecimalFormat":[https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classDecimalFormat.html#:~:text=%7D-,patterns,-A%20DecimalFormat%20consists].
553+
554+
488555
padLeft(int length, string pad = ' ') .[filter]
489556
-----------------------------------------------
490557
Doplní řetězec do určité délky jiným řetězcem zleva.
@@ -615,7 +682,7 @@ Ve výchozím nastavení filtr změní pořadí a resetuje celočíselného klí
615682

616683
sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter]
617684
-----------------------------------------------------------------------------------------------------------
618-
Filtr slouží k seřazení prvků v poli nebo iterátoru, přičemž zachovává asociační klíče:
685+
Filtr seřadí prvky pole nebo iterátoru a zachová jejich asociační klíče. Při nastaveném [národním prostředí |develop#locale] se řazení řídí jeho pravidly, pokud není specifikována vlastní porovnávací funkce.
619686

620687
```latte
621688
{foreach ($names|sort) as $name}

0 commit comments

Comments
 (0)