-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Grammar
Склонение существительных по падежам и числам (русский — 6 падежей, немецкий — Genitiv/Dativ) и спряжение глаголов по временам, лицам и числам на пяти языках.
Русское склонение — регулярные парадигмы по окончанию именительного падежа: 1-е склонение (-а/-я), 2-е (согласный/-й), 3-е (-ь), средний род (-о/-е), включая чередования после шипящих (книга → книги), особые формы «-ия/-ие» (линия → линии) и беглую гласную в родительном множественного (окно → окон, сумка → сумок). Немецкий меняет форму слова в Genitiv Singular (+s/+es) и Dativ Plural (+n); английский, французский и испанский существительные по падежам не изменяются — возвращается форма нужного числа (честный fail-safe).
Спряжение: русское (прошедшее -л/-ли, настоящее 1-го/2-го спряжения, будущее «буду + инфинитив»), английское (нерегулярный словарь + -ed/-s c орфографией), немецкие слабые глаголы (Präsens/Präteritum/Futur), французские группы -er/-ir, испанские -ar/-er/-ir.
use CloudCastle\Inflector\{Inflector, Language, GrammaticalCase, GrammaticalNumber, Tense, Person};
$ru = new Inflector(Language::Russian);
$ru->decline('линия', GrammaticalCase::Prepositional); // 'линии'
$ru->decline('сумка', GrammaticalCase::Genitive, GrammaticalNumber::Plural); // 'сумок'
$ru->conjugate('говорить', Tense::Present, Person::Second); // 'говоришь'
$de = new Inflector(Language::German);
$de->decline('Haus', GrammaticalCase::Genitive); // 'Hauses'
$de->conjugate('machen', Tense::Past); // 'machte'
$en = new Inflector(Language::English);
$en->conjugate('go', Tense::Past); // 'went' (нерегулярный)
$en->conjugate('stop', Tense::Past); // 'stopped' (удвоение согласной)- Единственный zero-dependency пакет с падежами и спряжением на пяти языках.
- Русские падежи работают в обоих числах, включая беглые гласные.
- Спряжение по лицам и числам, а не только третье лицо.
- Языки без падежей возвращают корректную форму числа, а не бросают исключение.
- Одушевлённость не определяется: винительный падеж строится по неодушевлённой парадигме («вижу стол», но для «кота» нужен словарь).
- Слова на «-ь» склоняются по женскому 3-му склонению (ночь → ночи); мужские («конь») требуют словаря.
- Нерегулярные глаголы (кроме частотных английских) спрягаются по регулярным схемам; супплетивные формы (идти → шёл) не поддерживаются.
- Генерация интерфейсных строк, отчётов, уведомлений с регулярной лексикой.
- Автоматическое построение форм для словоформ предметной области после проверки.
- Склонение личных имён и фамилий без словаря — используйте морфологический анализатор со словарём (petrovich, morphos).
- Спряжение нерегулярных глаголов вне частотного английского словаря.
flowchart TD
W["слово в им. п."] --> E{"окончание"}
E -->|-а| F1["1-е скл. твёрдое (мама)"]
E -->|-я| F2["1-е скл. мягкое (няня, линия)"]
E -->|-о| N1["ср. род твёрдый (окно)"]
E -->|-е| N2["ср. род мягкий (море, здание)"]
E -->|-ь| T3["3-е скл. (ночь)"]
E -->|-й| S2["2-е скл. мягкое (герой)"]
E -->|согласный| S1["2-е скл. твёрдое (стол)"]
| Возможность | Inflector | doctrine | symfony | morphos | intl | 🏆 Победитель |
|---|---|---|---|---|---|---|
| 6 русских падежей (ед.+мн.) | ✅ | ❌ | ❌ | ✅ | ❌ | Inflector, morphos |
| Немецкие Genitiv/Dativ | ✅ | ❌ | ❌ | ❌ | ❌ | Inflector |
| Спряжение по временам | ✅ | ❌ | ❌ | ❌ | Inflector | |
| Скорость склонения RU | ✅ | — | — | — | Inflector |
CloudCastle Inflector · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)