Skip to content

Feature Grammar

github-actions[bot] edited this page Jul 15, 2026 · 1 revision

📐 Склонение по падежам и спряжение по временам

← Возможности · Главная · Сравнение

Склонение существительных по падежам и числам (русский — 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-е скл. твёрдое (стол)"]
Loading

Сравнение с аналогами

Возможность Inflector doctrine symfony morphos intl 🏆 Победитель
6 русских падежей (ед.+мн.) Inflector, morphos
Немецкие Genitiv/Dativ Inflector
Спряжение по временам ⚠️ Inflector
Скорость склонения RU ⚠️ (~11× медленнее) Inflector

Clone this wiki locally