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á.
Czech Vocative a NameCase
Pro správné skloňování dobře poslouží 2 knihovny. První je Czech Vocative, 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á nastaví velikosti písmen. Obojí lze instalovat pomocí composeru.
composer require granam/czech-vocative 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%.
$vocative = new Granam\CzechVocative\CzechName();
// Základní nastavení NameCase které používám já, více v dokumentaci
Tamtamchik\NameCase\Formatter::setOptions([ 'irish' => false, 'lazy' => false ]);
$vocative->vocative('Pavel'); // => pavle
Formatter::nameCase($vocative->vocative("Pavel")) // => Pavle
Formatter::nameCase($vocative->vocative("Kutáč")) // => Kutáči
Formatter::nameCase($vocative->vocative("Jan Pavel")) // => Jan Pavle
Formatter::nameCase($vocative->vocative(explode(" ", "Jan Pavel")[0])) // => Jane
// vocative má využití především s českými jmény, NameCase formatter ale zvládá všechna jména
Formatter::nameCase($vocative->vocative("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
Předgenerovaný jmenný seznam
Pro někoho může být jednodušší použít již předgenerovaný seznam. Třeba do jeho jazyka knihovna neexistuje. Takový seznam připravil kolega Kozleek, který je dostupný na Githubu a na stránkách nase-trida.cz. Obsahuje přes 33 000 jmen včetně informace, jestli se jedná o mužské či ženské jméno. Seznam je dostupný v XML a XLSX formátu. Děkuji Tomášovi za komentář!
Za $$$ o úroveň výše
Přímo za účelem oslovování a skloňování vzniklo rovnou celé, částečně 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
K tomuto článku již není možné přidávat další komentáře
Komentáře
Ahoj Pavle,, já jsem si v pythonu generoval XML a XSLS soubor pro hromadné korespondence.
Klidně si to doplň do článku jestli se ti to bude hodit.
https://www.nase-trida.cz/ceska-jmena-osloveni/
Paráda, díky. Odkaz jsem do článku doplnil.
Díky moc za skvělý článek, přesně toto jsme potřebovali, abychom mohli na eshopu hezky česky oslovovat zákaznice :-)
Jsem rád, že článek pomohl. Zrovna dnes jsem jej lehce upravil, protože autor knihovnu již neaktualizuje a nelze ji nainstalovat pro web s PHP 8. Je potřeba tedy využít fork a upravit lehce
composer.json
.Děkuji za zmínku mé služby, udělalo mi to radost.
Jen upřesním, že pro malé projekty je zcela zdarma. Většina webů ji využívá v režimu, ve kterém lze ročně bezplatně ohnout přes 3500 jmen, což pokrývá potřeby většiny nekomerčních projektů. Některé weby mé API využívají už 10 let, aniž by musely na 4000 hodin jeho vývoje jakkoliv přispět. :-) Právě náročnost vývoje je důvodem, proč má služba není zdarma i pro větší e-shopy. Ale i pro ně jsou ceny směšné.
Děkuji za info, článek jsem upravil a doplnil.