AmberDB
view release on metacpan or search on metacpan
docs/TR.AmberDB-Locale_Kullanim_Rehberi.md view on Meta::CPAN
# 3. İnceltme / Düzeltme iÅaretleri
$tr->normalize_word("kârın"); # "karin"
$tr->normalize_word("ÃLÃM"); # "alim"
# 4. Kelime sonu ötümsüzleÅme (SertleÅme / Fonetik dönüÅüm)
$tr->normalize_word("tevhid"); # "tevhit" (d$ => t)
$tr->normalize_word("gazab"); # "gazap" (b$ => p)
$tr->normalize_word("mehmed"); # "mehmet" (d$ => t)
```
#### `search_pattern($query)`
Arama sorgusu için çok dilli, esnek ve fonetik regex arama kalıpları derler:
```perl
my $pattern = $tr->search_pattern("Türkiye");
# "t[uü]rk[iıİI]y[eE]" gibi Türkçe ve ASCII varyantlarını kapsayan fonetik desen üretir
```
#### `search_regex($string, $pattern)`
Hedef metin (`$string`) içerisinde arama kalıbının (`$pattern`) locale kurallarıyla eÅleÅip eÅleÅmediÄini kontrol eder. EÅleÅirse `1`, eÅleÅmezse `0` döner:
```perl
my $bulundu = $tr->search_regex("İstanbul BoÄazı", "istanbul"); # 1
my $eslesti = $tr->search_regex("İzmir Kordon", $pattern); # 1
```
---
### 5.7 HTML Entity Ãözümleme
#### `decode_entities($string)`
```perl
$lang->decode_entities("& < > € € ç");
# "& < > ⬠⬠ç"
```
Ãç aÅama:
1. **Hex numerik:** `€` â `â¬`
2. **Desimal numerik:** `€` â `â¬`
3. **Named entity'ler:** Evrensel set (`&`, `<`, ` `, `€`, vb.) + locale'e özgü ekler (`ç`, `š`, `ğ`, vb.)
---
### 5.8 UTF-8 Güvenli Substring
#### `substring($string, [$offset], $length)`
```perl
my $tr = AmberDB::Locale->new(language => "tr");
$tr->substring("Ãanakkale", 0, 4); # "Ãana" (4 karakter, 4 byte deÄil!)
$tr->substring("İstanbul", 2, 3); # "tan"
# Raw UTF-8 byte string ile de güvenli:
my $raw = encode('UTF-8', "Åanlıurfa");
$tr->substring($raw, 0, 5); # "Åanlı" (doÄru Åekilde re-encode edilir)
```
> `Encode::is_utf8()` ile string'in decode edilip edilmediÄi kontrol edilir. Raw byte ise `decode â substr â encode` zinciri uygulanır; böylece multibyte karakterler ortadan kesilmez.
---
### 5.9 Tarih/Saat İÅlemleri
#### `format_date($time [, $pattern_or_style])`
```perl
my $tr = AmberDB::Locale->new(language => "tr");
my $epoch = time(); # örn: 2026-08-09
$tr->format_date($epoch); # "09.08.2026"
$tr->format_date($epoch, 'medium'); # "9 AÄu 2026"
$tr->format_date($epoch, 'long'); # "9 AÄustos 2026"
$tr->format_date($epoch, 'full'); # "Pazar, 9 AÄustos 2026"
$tr->format_date($epoch, 'time'); # "14:30"
$tr->format_date($epoch, 'datetime'); # "09.08.2026 14:30"
# Ãzel pattern
$tr->format_date($epoch, 'YYYY-MM-DD'); # "2026-08-09"
$tr->format_date($epoch, 'DD/MM/YYYY'); # "09/08/2026"
# Tarih string'i de kabul eder
$tr->format_date("2026-08-09", 'full'); # "Pazar, 9 AÄustos 2026"
```
**Desteklenen token'lar:**
| Token | Anlam | Ãrnek |
|---|---|---|
| `YYYY` / `YY` | 4/2 haneli yıl | 2026 / 26 |
| `MMMM` / `MMM` / `MM` / `M` | Ay adı / kısa / 2 haneli / tek | AÄustos / AÄu / 08 / 8 |
| `DD` / `D` | Gün (2 haneli / tek) | 09 / 9 |
| `dddd` / `ddd` | Gün adı / kısa | Pazar / Paz |
| `HH` / `H` | Saat | 14 / 14 |
| `mm` / `m` | Dakika | 05 / 5 |
| `ss` / `s` | Saniye | 09 / 9 |
**Kabul edilen giriŠformatları:**
- Unix timestamp: `1786345200`
- Tarih string'i: `2026-08-09`, `2026/08/09`, `2026.08.09`
- Tarih + saat: `2026-08-09 14:30:00`, `2026-08-09T14:30`
#### `parse_date($string [, %opts])`
```perl
my $epoch = $tr->parse_date("09.08.2026"); # Unix timestamp
my $h = $tr->parse_date("09.08.2026", hash => 1);
# { year => 2026, month => 8, day => 9, hour => 0, minute => 0, second => 0 }
```
> Kısa tarih formatı locale'in `date_format.short` deÄerine göre `GG.AA.YYYY` mı yoksa `AA/GG/YYYY` mı olduÄu otomatik tespit edilir.
---
### 5.10 Sayı ve Para Birimi Biçimlendirme
#### `format_number($num [, %opts])`
```perl
( run in 0.659 second using v1.01-cache-2.11-cpan-364913b4093 )