nyoncode/laravel-czech-names

Skloňování českých jmen do všech sedmi pádů a oslovování pro Laravel — „Dobrý den, Ondřeji,".

Maintainers

Package info

github.com/NyonCode/laravel-czech-names

pkg:composer/nyoncode/laravel-czech-names

Transparency log

Statistics

Installs: 17

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2026-08-21 15:51 UTC

This package is auto-updated.

Last update: 2026-08-21 18:42:31 UTC


README

Skloňování českých jmen do všech sedmi pádů a oslovování.

use NyonCode\CzechNames\Facades\CzechNames;

CzechNames::salutation('Ondřej Nyklíček');            // Dobrý den, Ondřeji,
CzechNames::salutation('Petra Nováková', 'informal'); // Ahoj, Petro,
CzechNames::salutation(null);                         // Dobrý den,

CzechNames::decline('Ondřej Nyklíček', 3);            // Ondřejovi Nyklíčkovi
CzechNames::vocative('Ing. Marek Dvořák');            // Marku

Instalace

composer require nyoncode/laravel-czech-names

Konfigurace (nepovinná) se publikuje přes php artisan czech-names:install.

Co umí

Sedm pádů křestních jmen i příjmení, obou rodů. Nejde o lepení koncovek — čeština mění i konec kmene:

1. pád 2. pád 3. pád 5. pád 7. pád
vzor pán Petr Petra Petrovi Petře Petrem
prchavé „e" Zdeněk Zdeňka Zdeňkovi Zdeňku Zdeňkem
vzor muž Ondřej Ondřeje Ondřejovi Ondřeji Ondřejem
vzor žena Lenka Lenky Lence Lenko Lenkou
vzor růže Marie Marie Marii Marie Marií
přechýlené Nováková Novákové Novákové Nováková Novákovou
přídavné Novotný Novotného Novotnému Novotný Novotným

Odhad rodu. Nejsilnější stopa je přechýlené příjmení (-ová, ) — to znamená ženu bez ohledu na křestní jméno. Teprve pak rozhoduje tvar jména.

Tituly (Ing., Mgr., MUDr., Ph.D.…) se před skloňováním zahodí.

Čeho se nedotkne

⚠️ Když si pravidla nejsou jistá, vrací jméno beze změny. Zkomolené jméno je horší než nesklonné: nesklonného si čtenář všimne jako strohosti, zkomoleného jako neúcty. Týká se to cizích jmen na samohlásku (Nicolo), příjmení na (Janů), ženských jmen na souhlásku (Dagmar) a neznámého rodu.

⚠️ Není to stoprocentní a být nemůže. České skloňování jmen má místa, kde tvar slova nestačí a rozhoduje zvyk u konkrétního jména:

  • -l je jediná souhláska, kde se z tvaru poznat nedá: Michal → Michala (tvrdě), ale Král → Krále (měkce). Řeší se seznamem výjimek (Irregulars::SOFT_L_NAMES), ne pravidlem — a ten seznam je krátký.
  • Obourodá jména (Saša, Nikola, Kája, Jindra) nemají rod v tvaru. Odhad je pošle na ženský vzor, takže u muže zůstane příjmení nesklonné (Saša NovákSaši Novák). Oslovení je přitom správně v obou čteních — jména na -a mají 5. pád -o bez ohledu na rod (Sašo, Jano, Honzo).
  • Cizí jména na samohlásku (Nicolo, André, Mia) nemají v češtině ustálený vzor; balíček je vrací beze změny.
  • Ženská jména na souhlásku (Dagmar, Ester) se v praxi neskloňují a jsou vyjmenovaná — jméno mimo seznam se skloní jako mužské.

Proto má každý model možnost skloňování přebít (salutationOverride()) a proto se v pochybnostech vrací jméno beze změny.

Rod jim předej, nebo použij ruční tvar:

CzechNames::salutation(CzechNames::name('Saša Novák', 'masculine'));
CzechNames::name('Saša Novák', vocative: 'Sašo');

Modely

Model řekne, jak se ten člověk jmenuje, přes Addressable — balíček se pak neptá na sloupce, ty se v každé aplikaci jmenují jinak:

use NyonCode\CzechNames\Contracts\Addressable;
use NyonCode\CzechNames\Enums\Gender;

class Contact extends Model implements Addressable
{
    public function salutationName(): ?string { return $this->name; }
    public function salutationGender(): Gender { return Gender::Unknown; }
    public function salutationOverride(): ?string { return $this->vocative; }
}

CzechNames::salutation($contact);   // Dobrý den, Ondřeji,

salutationOverride() přebije skloňování úplně — od opravy chybného pádu (Sašo) po vlastní oslovení (pane doktore).

Tón

formal vyká, informal tyká. Rozhoduje jen o výchozím pozdravu; pád je v obou případech stejný a tělo zprávy si tón musí pohlídat autor.

Náhrada bez jména se skládá ze stejného pozdravu — jinak by část publika dostala „Ahoj," a část „Dobrý den," podle toho, u koho zrovna chybí jméno.

Testy a zdroje

composer test

Tabulka v tests/Unit/DeclensionTest.php je psaná po jménech, ne po pravidlech, aby šlo nové jméno přidat, aniž by ho někdo musel zařazovat ke vzoru.

Pravidla i sporné tvary jsou ověřené proti Internetové jazykové příručce Ústavu pro jazyk český AV ČR, ne proti citu:

Licence

MIT