Latte ohýbání slova dle hodnoty proměnné
- kazlik
- Člen | 19
Zdravím, mám pocit, že jsem někdy někde asi v dokumentaci narazil na to, že lze nastavit u latte ohýbání slova dle hodnoty proměnné
1 - kus
4 - kusy
5 - kusů
ovšem teď se to snažím najít ale nikde nemůžu tomu přijít na stopu :/ Nevíte, jak se to makro jmenuje?
Editoval kazlik (29. 10. 2015 7:24)
- leninzprahy
- Člen | 150
Třeba https://github.com/…/Helpers.php#L84
registrovat jako filtr
$template->addFilter('plural', function($n) {
$args = func_get_args();
return $args[($n == 1) ? 1 : (($n >= 2 && $n <= 4) ? 2 : 3)];
});
použití pak
{$number|plural:'kus':'kusy':'kusů'}
Editoval leninzprahy (29. 10. 2015 18:31)
- chikeet
- Člen | 160
Pokud se ti to hodně opakuje a nechce se ti to pokaždé vypisovat, tak
třeba i filtr pro každou jednotku. Nebo něco jako
unitPlural($val, $unitName)
, nějak takhle:
<?php
$template->addFilter('unitPlural', function($val, $unit) {
$verbals = [
'ks' => ['kus', 'kusy', 'kusů'],
'os' => ['osoba', 'osoby', 'osob'],
//...
];
$unitVerbals = $verbals[$unit];
return $unitVerbals [($n == 1) ? 0 : (($n >= 2 && $n <= 4) ? 1 : 2)];
});
?>
použití:
{$number|unitPlural:'ks'}
za předpokladu, že máš pár slov (třeba ty jednotky), která se často opakují.
Editoval chikeet (29. 10. 2015 22:34)
- Pavel Janda
- Člen | 977
Ať už máš aplikaci lokalizovanou nebo ne, je též možnost tahat to přes nějaký Translator.
{_'Koupil jsem si %d %d:kočku|kočky|koček', $count, $count}
Připadá mi to asi nejzajímavější.
Editoval Pavel Janda (30. 10. 2015 8:22)