Skip to content

Commit f3eaa73

Browse files
committed
latte 3.0.18
1 parent 074fc83 commit f3eaa73

34 files changed

+2291
-115
lines changed

latte/bg/develop.texy

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

168168

169+
Местоположение .[#toc-locale]{data-version:3.0.18}
170+
==================================================
171+
172+
Latte ви позволява да зададете локала, който влияе на форматирането на числата, датите и сортирането. Той се задава чрез метода `setLocale()`. Идентификаторът на локала следва стандарта за езикови маркери на IETF, който използва разширението на PHP `intl`. Той се състои от код на езика и евентуално от код на страната, например `en_US` за английски език в САЩ, `de_DE` за немски език в Германия и т.н.
173+
174+
```php
175+
$latte = new Latte\Engine;
176+
$latte->setLocale('cs');
177+
```
178+
179+
Настройката на локала влияе на филтрите [localDate |filters#localDate], [sort |filters#sort], [number |filters#number] и [bytes |filters#bytes].
180+
181+
.[note]
182+
Изисква разширението PHP `intl`. Настройката в Latte не влияе на глобалната настройка на локала в PHP.
183+
184+
169185
Строг режим .[#toc-strict-mode]{data-version:3.0.8}
170186
===================================================
171187

latte/bg/filters.texy

+118-6
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
| `bytes` | [форматира размера в байтове |#bytes]
1212
| `clamp` | [ограничава стойността до определен диапазон |#clamp]
1313
| `dataStream` | [Конвертиране на протокола за данни URI |#dataStream]
14-
| `date` | [форматиране на датата |#date]
14+
| `date` | [форматиране на датата и часа |#date]
1515
| `explode` | [разделя низа с даден разделител |#explode]
1616
| `first` | [връща първия елемент на масив или символен низ |#first]
1717
| `group` | [групиране на данни по различни критерии |#group]
@@ -20,6 +20,7 @@
2020
| `join` | [обединяване на масив в низ |#implode]
2121
| `last` | [връща последния елемент на масив или символен низ |#last]
2222
| `length` | [връща дължината на низ или масив |#length]
23+
| `localDate` | [форматиране на датата и часа в съответствие с местността |#localDate]
2324
| `number` | [форматира число |#number]
2425
| `padLeft` | [допълва низа вляво |#padLeft]
2526
| `padRight` | [допълва низа до зададена дължина надясно |#padRight]
@@ -168,7 +169,7 @@ breakLines .[filter]
168169

169170
bytes(int precision = 2) .[filter]
170171
----------------------------------
171-
Форматира размера в байтове в удобна за четене от човека форма.
172+
Форматира размера в байтове в удобна за четене от човека форма. Ако е зададена [локална среда |develop#locale], се използват съответните десетични и хилядни разделители.
172173

173174
```latte
174175
{$size|bytes} 0 B, 1.25 GB, …
@@ -255,13 +256,14 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
255256

256257
date(string format) .[filter]
257258
-----------------------------
258-
Връща дата в зададен формат, като използва опциите на функциите [php:strftime] или [php:date] на PHP. Филтърът получава датата като времеви печат на UNIX, низ или обект от тип `DateTime`.
259+
Форматира датата и часа в съответствие с маската, използвана от функцията на PHP [php:date]. Филтърът приема датата във формат UNIX timestamp, като низ или като обект `DateTimeInterface`.
259260

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

265+
Вижте също [localDate |#localDate].
266+
265267

266268
escapeUrl .[filter]
267269
-------------------
@@ -418,6 +420,68 @@ length .[filter]
418420
```
419421

420422

423+
localDate(string format = null, string date = null, string time = null) .[filter]
424+
---------------------------------------------------------------------------------
425+
Форматира датата и часа в зависимост от [локала, |develop#locale] като осигурява последователно и локализирано показване на данните за времето на различни езици и региони. Филтърът приема датата като времеви печат на UNIX, низ или обект `DateTimeInterface`.
426+
427+
```latte
428+
{$date|localDate} {* 15. dubna 2024 *}
429+
{$date|format: yM} {* 4/2024 *}
430+
{$date|localDate: date: medium} {* 15. 4. 2024 *}
431+
```
432+
433+
Ако използвате филтъра без никакви параметри, той ще изведе датата на ниво дълъг формат, както е обяснено по-нататък.
434+
435+
**а) Използване на формата**
436+
437+
Параметърът `format` описва кои компоненти на времето трябва да се показват. Той използва буквени кодове, при които броят на повторенията влияе на ширината на изхода:
438+
439+
| Година | `y` / `yy` / `yyyy` | `2024` / `24` / `2024`
440+
| Месец | `M` / `MM` / `MMM` / `MMMM` | `7` / `07` / `Jul` / `July`
441+
| Ден | `d` / `dd` | `1` / `01`
442+
| Час | `j` / `H` / `h` | предпочитан / 24-часов / 12-часов
443+
| Минута | `m` / `mm` | `5` / `05` <small>(2 цифри, когато се комбинира със секунди)</small>
444+
| Секунда | `s` / `ss` | `8` / `08` <small>(2 цифри, когато се комбинират с минути)</small>
445+
446+
Редът на кодовете във формата няма значение, тъй като редът на компонентите ще бъде показан в съответствие с конвенциите на локала. Следователно форматът е независим от локала. Например, форматът `yyyyMMMMd` в локала `en_US` извежда `April 15, 2024`, докато в локала `cs_CZ` извежда `15. dubna 2024`:
447+
448+
| locale: | bg-BG | en_US
449+
|---
450+
| `format: 'dMy'` | 10.08.2024 г. | 8/10/2024
451+
| `format: 'yM'` | 08.2024 г. | 8/2024
452+
| `format: 'yyyyMMMM'` | август 2024 г. | August 2024
453+
| `format: 'MMMM'` | август | August
454+
| `format: 'jm'` | 17:54 ч. | 5:54 PM
455+
| `format: 'Hm'` | 17:54 ч. | 17:54
456+
| `format: 'hm'` | 5:54 ч. сл.об. | 5:54 PM
457+
458+
459+
**б) Използване на предварително зададени стилове**
460+
461+
Параметрите `date` и `time` определят нивото на детайлност за показване на датата и часа. Можете да избирате от няколко нива: `full`, `long`, `medium`, `short`. Можете да показвате само датата, само часа или и двете:
462+
463+
| locale: | bg-BG | en_US
464+
|---
465+
| `date: short` | 23.01.78 г. | 1/23/78
466+
| `date: medium` | 23.01.1978 г. | Jan 23, 1978
467+
| `date: long` | 23 януари 1978 г. | January 23, 1978
468+
| `date: full` | понеделник, 23 януари 1978 г. | Monday, January 23, 1978
469+
| `time: short` | 8:30 ч. | 8:30 AM
470+
| `time: medium` | 8:30:59 ч. | 8:30:59 AM
471+
| `time: long` | 8:30:59 ч. Гринуич+1 | 8:30:59 AM GMT+1
472+
| `date: short, time: short` | 23.01.78 г., 8:30 ч. | 1/23/78, 8:30 AM
473+
| `date: medium, time: short` | 23.01.1978 г., 8:30 ч. | Jan 23, 1978, 8:30 AM
474+
| `date: long, time: short` | 23 януари 1978 г. в 8:30 ч. | January 23, 1978 at 8:30 AM
475+
476+
За датата можете да използвате и префикса `relative-` (например `relative-short`), който за дати, близки до настоящата, ще покаже `yesterday`, `today` или `tomorrow`; в противен случай ще се покаже по стандартния начин.
477+
478+
```latte
479+
{$date|localDate: date: relative-short} {* yesterday *}
480+
```
481+
482+
Вижте също [дата |#date].
483+
484+
421485
lower .[filter]
422486
---------------
423487
Преобразува стойността в малки букви. Изисква PHP разширение `mbstring`.
@@ -475,7 +539,7 @@ Unescaped: <b>hello</b>
475539

476540
number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter]
477541
------------------------------------------------------------------------------------
478-
Форматира число до зададен брой знаци след десетичната запетая. Можете също така да зададете символ на десетичната запетая и разделителя за хиляди.
542+
Форматира число до определен брой знаци след десетичната запетая. Ако е зададена [локална среда |develop#locale], се използват съответните разделители за десетични знаци и хиляди.
479543

480544
```latte
481545
{1234.20 |number} 1,234
@@ -485,6 +549,54 @@ number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[fil
485549
```
486550

487551

552+
number(string format) .[filter]
553+
-------------------------------
554+
Параметърът `format` ви позволява да определите външния вид на числата точно според вашите нужди. Той изисква зададена [локализация |develop#locale]. Форматът се състои от няколко специални знака, чието пълно описание можете да намерите в документацията на "DecimalFormat"::https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns
555+
556+
- <c id=6/> задължителна цифра, която винаги се показва, дори ако е нула
557+
- `#` незадължителна цифра, показва се само ако числото има цифра на това място
558+
- `@` значима цифра, помага за показване на числото с определен брой значими цифри
559+
- `.` маркира мястото, където трябва да се намира десетичният разделител (запетая или точка, в зависимост от локала)
560+
- `,` се използва за разделяне на групи от цифри, обикновено хиляди
561+
- `%` умножава числото по 100 и добавя знака за процент
562+
563+
Нека разгледаме някои примери. В първия пример двата знака след десетичната запетая са задължителни; във втория те не са задължителни. Третият пример показва попълване с нули от двете страни, а четвъртият показва само съществуващите цифри:
564+
565+
```latte
566+
{1234.5|number: '#,##0.00'} {* 1,234.50 *}
567+
{1234.5|number: '#,##0.##'} {* 1,234.5 *}
568+
{1.23 |number: '000.000'} {* 001.230 *}
569+
{1.2 |number: '##.##'} {* 1.2 *}
570+
```
571+
572+
Значимите цифри определят колко цифри, независимо от десетичната запетая, трябва да бъдат показани, като при необходимост числото се закръгля:
573+
574+
```latte
575+
{1234|number: '@@'} {* 1200 *}
576+
{1234|number: '@@@'} {* 1230 *}
577+
{1234|number: '@@@#'} {* 1234 *}
578+
{1.2345|number: '@@@'} {* 1.23 *}
579+
{0.00123|number: '@@'} {* 0.0012 *}
580+
```
581+
582+
Лесен начин за показване на дадено число като процент. Числото се умножава по 100 и се добавя знакът `%`:
583+
584+
```latte
585+
{0.1234|number: '#.##%'} {* 12.34% *}
586+
```
587+
588+
Можем да дефинираме различен формат за положителни и отрицателни числа, разделени със знака `;`. По този начин например положителните числа могат да се показват със знака `+`:
589+
590+
```latte
591+
{42|number: '#.##;(#.##)'} {* 42 *}
592+
{-42|number: '#.##;(#.##)'} {* (42) *}
593+
{42|number: '+#.##;-#.##'} {* +42 *}
594+
{-42|number: '+#.##;-#.##'} {* -42 *}
595+
```
596+
597+
Не забравяйте, че действителният вид на числата може да се различава в зависимост от настройките на локала. Например в някои страни като десетичен разделител се използва запетая вместо точка. Този филтър автоматично отчита това, така че не е необходимо да се притеснявате за него.
598+
599+
488600
padLeft(int length, string pad = ' ') .[filter]
489601
-----------------------------------------------
490602
Попълва низ с определена дължина с друг низ отляво.
@@ -615,7 +727,7 @@ slice(int start, int length = null, bool preserveKeys = false) .[filter]
615727

616728
sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter]
617729
-----------------------------------------------------------------------------------------------------------
618-
Филтърът се използва за сортиране на елементите в масив или итератор, като се запазват ключовете за асоцииране:
730+
Филтърът сортира елементите на масив или итератор, като запазва асоциативните им ключове. Когато е зададен [локал |develop#locale], сортирането следва неговите правила, освен ако не е зададена потребителска функция за сравнение.
619731

620732
```latte
621733
{foreach ($names|sort) as $name}

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

0 commit comments

Comments
 (0)