You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
+
169
185
Строг режим .[#toc-strict-mode]{data-version:3.0.8}
Copy file name to clipboardexpand all lines: latte/bg/filters.texy
+118-6
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@
11
11
| `bytes` | [форматира размера в байтове |#bytes]
12
12
| `clamp` | [ограничава стойността до определен диапазон |#clamp]
13
13
| `dataStream` | [Конвертиране на протокола за данни URI |#dataStream]
14
-
| `date` | [форматиране на датата |#date]
14
+
| `date` | [форматиране на датата и часа |#date]
15
15
| `explode` | [разделя низа с даден разделител |#explode]
16
16
| `first` | [връща първия елемент на масив или символен низ |#first]
17
17
| `group` | [групиране на данни по различни критерии |#group]
@@ -20,6 +20,7 @@
20
20
| `join` | [обединяване на масив в низ |#implode]
21
21
| `last` | [връща последния елемент на масив или символен низ |#last]
22
22
| `length` | [връща дължината на низ или масив |#length]
23
+
| `localDate` | [форматиране на датата и часа в съответствие с местността |#localDate]
23
24
| `number` | [форматира число |#number]
24
25
| `padLeft` | [допълва низа вляво |#padLeft]
25
26
| `padRight` | [допълва низа до зададена дължина надясно |#padRight]
@@ -168,7 +169,7 @@ breakLines .[filter]
168
169
169
170
bytes(int precision = 2) .[filter]
170
171
----------------------------------
171
-
Форматира размера в байтове в удобна за четене от човека форма.
172
+
Форматира размера в байтове в удобна за четене от човека форма. Ако е зададена [локална среда |develop#locale], се използват съответните десетични и хилядни разделители.
Връща дата в зададен формат, като използва опциите на функциите [php:strftime] или [php:date] на PHP. Филтърът получава датата като времеви печат на UNIX, низ или обект от тип `DateTime`.
259
+
Форматира датата и часа в съответствие с маската, използвана от функцията на PHP [php:date]. Филтърът приема датата във формат UNIX timestamp, като низ или като обект `DateTimeInterface`.
259
260
260
261
```latte
261
-
{$today|date:'%d.%m.%Y'}
262
262
{$today|date:'j. n. Y'}
263
263
```
264
264
265
+
Вижте също [localDate |#localDate].
266
+
265
267
266
268
escapeUrl .[filter]
267
269
-------------------
@@ -418,6 +420,68 @@ length .[filter]
418
420
```
419
421
420
422
423
+
localDate(string format = null, string date = null, string time = null) .[filter]
Форматира датата и часа в зависимост от [локала, |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` описва кои компоненти на времето трябва да се показват. Той използва буквени кодове, при които броят на повторенията влияе на ширината на изхода:
| Минута | `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`; в противен случай ще се покаже по стандартния начин.
Форматира число до зададен брой знаци след десетичната запетая. Можете също така да зададете символ на десетичната запетая и разделителя за хиляди.
542
+
Форматира число до определен брой знаци след десетичната запетая. Ако е зададена [локална среда |develop#locale], се използват съответните разделители за десетични знаци и хиляди.
Параметърът `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
+
488
600
padLeft(int length, string pad = ' ') .[filter]
489
601
-----------------------------------------------
490
602
Попълва низ с определена дължина с друг низ отляво.
Филтърът се използва за сортиране на елементите в масив или итератор, като се запазват ключовете за асоцииране:
730
+
Филтърът сортира елементите на масив или итератор, като запазва асоциативните им ключове. Когато е зададен [локал |develop#locale], сортирането следва неговите правила, освен ако не е зададена потребителска функция за сравнение.
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.
0 commit comments