Vokativ v PHP - 5. pádem oslovujeme, voláme

PHP, Tipy & triky

Čeština, pády, oslovení – to vše může vypadat velmi obtížně pro vývojáře, pokud se jména mají skloňovat v programech. Naštěstí to ale vůbec složité není, protože už to plno lidí vyřešilo dříve. Stačí použít vhodnou knihovnu a hned korespondence či uvítací obrazovka může vypadat lépe.

Vokativ v PHP - 5. pádem oslovujeme, voláme

Na oslovení pátým pádem upozorňují již učitelky v mateřinkách. Na základce se pak dětí učí, jak správně skloňovat jednotlivá slova. Nejedná se tedy o žádnou náročnou úlohu, přesto často na ryze českých stránkách či v emailech lze vidět texty jako Dobrý den Pavel. Protože jsem se tomu chtěl osobně vyhnout, hledal jsem možnost jak i programově správně skloňovat jména.

Pokud řešíte naopak ryze slovenský systém, nemusíte se tímto problémem zatěžovat. Slovenština totiž vokativ nepoužívá.

Vokativ a NameCase

Pro správné skloňování dobře poslouží 2 knihovny. První je Vokativ, u které hned z názvu plyne, jaký plní účel. Jméno v pátém pádě ale je pouze malými písmeny. Od toho je druhá knihovna NameCase, která správně nastaví velikosti písmen. Obojí lze instalovat pomocí composeru.

composer require bigit/vokativ tamtamchik/namecase

Příjmení, víceslovná jména

Knihovna zvládne skloňovat také příjmení. Není tedy problém, pokud je potřeba generovat více formální oslovení. Pokud má ale jméno více slov, tady už skloňování trochu vázne. Protože správně česky by se mělo použít pouze první jméno, je nutné si ho vlastnoručně získat. To už ale nemusí fungovat vždy na 100%.

$vokativ = new Vokativ\Name(); 
// Základní nastavení NameCase které používám já, více v dokumentaci
Tamtamchik\NameCase\Formatter::setOptions([ 'irish' => false, 'lazy' => false ]);

$vokativ->vokativ('Pavel'); // => pavle
Formatter::nameCase($vokativ->vokativ("Pavel")) // => Pavle
Formatter::nameCase($vokativ->vokativ("Kutáč")) // => Kutáči

Formatter::nameCase($vokativ->vokativ("Jan Pavel")) // => Jan Pavle
Formatter::nameCase($vokativ->vokativ(explode(" ", "Jan Pavel")[0])) // => Jane

// Vokativ má využití především s českými jmény, NameCase formatter ale zvládá všechna jména
Formatter::nameCase($vokativ->vokativ("mc'donald")) // => Mc'Donalde
// Samotný NameCase pak nemá problém i s více slovnými jmény a správně formátuje i "spojky"
Formatter::nameCase("armin van buuren") // => Armin van Buuren

Za $$$ o úroveň výše

Přímo za účelem oslovování a skloňování vzniklo rovnou celé, bohužel ale placené, API na stránkách sklonovani-jmen.cz. Samozřejmě ale celou proceduru povýšili na úplně jinou úroveň. Nemusí se řešit dělení na jméno, druhé jméno a příjmení. Systém vše detekuje a správně naformátuje. Na svých stránkách nabízí si celý mechanismus i vyzkoušet.

Například ze vstupního textu hana kateřina nováková vzniklo paní Hano Nováková.


Své vlastní postřehy se skloňováním a práci se jmény můžete sdílet v komentářích

Přidat komentář

Položky označené * jsou povinné. Email nebude zveřejněn

Buď první, kdo přidá komentář. Zatím zde nic není