PHPackages                             emagedev/morpher - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. emagedev/morpher

AbandonedMagento-module[Utility &amp; Helpers](/categories/utility)

emagedev/morpher
================

Magento extension to inflect russian word with API of website morpher.ru

1.1.4(8y ago)1199BSD-3-ClausePHP

Since Nov 20Pushed 8y ago2 watchersCompare

[ Source](https://github.com/Emagedev/Morpher)[ Packagist](https://packagist.org/packages/emagedev/morpher)[ RSS](/packages/emagedev-morpher/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (4)Dependencies (2)Versions (5)Used By (0)

API сайта morpher.ru для Magento 1.9
====================================

[](#api-сайта-morpherru-для-magento-19)

Склонятор для Magento
---------------------

[](#склонятор-для-magento)

Этот модуль позволит склонять слова в зависимости от контекста с помощью онлайн сервиса morpher.ru. Первый запрос осуществляется через REST API, дальнейшие - из кэша в базе данных, что позволяет не нагружать сервис лишними запросами (они ограничены по бесплатной и платной подпискам).

Может быть полезно для склонения [количеств товаров](#inflectWordByNumber) или [имен пользователей](#inflectName), ну и для [чего-нибудь ещё](#inflectWord).

**Все передаваемые в модуль слова и фразы должны быть в *именительном* падеже**

Использование с числами
-----------------------

[](#использование-с-числами)

[\#](#inflectWordByNumber) Mage::helper('morpher')-&gt;**inflectWordByNumber($number, $phrase \[, $keepNumber = false \[, $translate = false \]\])**

Функция поможет склонять слова рядом с числами, например, для количества товаров в каталоге или корзине.

- `$number` определяет число, относительно которого нужно склонить слово
- `$phrase` определяет фразу или слово для склонения
- `$keepNumber` определяет, стоит ли оставлять число **перед** словом или фразой
- `$translate` определяет, необходимо ли переводить слово или фразу перед склонением, и каким модулем (может быть строкой, например `yourmoule`, или логическим значением)

Пример:

```
Mage::helper('morpher')->inflectWordByNumber(5, 'item', true, 'catalog');
```

Вернет:

> 5 товаров

```
Mage::helper('morpher')->inflectWordByNumber(1, 'piece', false, 'yourmodule');
```

Вернет:

> 1 штука

*В вашем модуле `thing` должно быть переведено как `штука`*

Склонение имён
--------------

[](#склонение-имён)

[\#](#inflectName) Mage::helper('morpher')-&gt;**inflectName($name, $inflection \[, $flags = array()\])**

Функция поможет склонять имена ваших пользователей.

- `$name` имя пользователя
- `$inflection` [склонение](#declension)
- `$flags` определяет дополнительные [флаги](#flags) для более точного склонения

API неплохо различает имена, но если есть возможность, следует указать род в флагах или использовать следующие методы:

- `inflectMaleName($name, $inflection [, $flags = array()])` для мужских
- `inflectFemaleName($name, $inflection [, $flags = array()])` для женских

Пример:

```
Mage::helper('morpher')->inflectMaleName('Ломоносов, Михаил Васильевич', Emagedev_Morpher_Helper_Data::DATIVE);
```

Вернет:

> Ломоносову, Михаилу Васильевичу

```
Mage::helper('morpher')->inflectFemaleName('Любовь Эдуардовна Соболь', Emagedev_Morpher_Helper_Data::GENITIVE);
```

Вернет:

> Любови Эдуардовны Соболь

Общий случай
------------

[](#общий-случай)

[\#](#inflectWord) Mage::helper('morpher')-&gt;**inflectWord($phrase, $inflection \[, $multi = false \[, $flags = array() \[, $translate = false \]\]\])**

Функция склоняет слово с заданными параметрами.

- `$phrase` фраза или слово для склонения
- `$inflection` [склонение](#declension)
- `$multi` определяет множественное ли число
- `$flags` определяет дополнительные [флаги](#flags) для более точного склонения
- `$translate` определяет, необходимо ли переводить слово или фразу перед склонением, и каким модулем (может быть строкой, например `yourmoule`, или логическим значением)

Авторизация на morpher.ru
-------------------------

[](#авторизация-на-morpherru)

Авторизация необходима для расширения лимита на склонение слов. Ваш логин и пароль вы можете ввести в панели управления в конфигурации. Настройки расположены в группе API (в стандартном переводе `СЕРВИСЫ`) во вкладке `API сайта morpher.ru`.

Шпаргалка
---------

[](#шпаргалка)

### [\#](#declension) Склонения

[](#-склонения)

Если ваш кодстайл не позволяет напрямую использовать кириллицу в коде, для склонений есть алиасы, записанные как константы в хелпере `Emagedev_Morpher_Helper_Data`.

ПадежСимволАлиасИменительныйИ`Emagedev_Morpher_Helper_Data::NOMINATIVE`РодительныйР`Emagedev_Morpher_Helper_Data::GENITIVE`ДательныйД`Emagedev_Morpher_Helper_Data::ACCUSATIVE`ВинительныйВ`Emagedev_Morpher_Helper_Data::DATIVE`ТворительныйТ`Emagedev_Morpher_Helper_Data::INSTRUMENTAL`ПредложныйП`Emagedev_Morpher_Helper_Data::PREPOSITIONAL`Предложный (о)П`Emagedev_Morpher_Helper_Data::PREPOSITIONAL_WITH_PREFIX`Местный (см. API)М`Emagedev_Morpher_Helper_Data::LOCATION`### [\#](#flags) Флаги

[](#-флаги)

Нужны для повышения качества склонения. Есть слова, которые могут склоняться по-разному, например:

- Фамилия Резник склоняется у мужчин и не склоняется у женщин;
- Ростов в творительном падеже будет Ростовым, если это фамилия, и Ростовом, если это город;
- тестер в винительном падеже будет тестера, если это человек, и тестер, если имеется в виду прибор.

*Методы `inflectName`, `inflectMaleName`, `inflectFemaleName` используют необходимые флаги по умолчанию*

ФлагОписаниеАлиасFeminineИ`Emagedev_Morpher_Helper_Data::FLAG_FEMININE`MasculineР`Emagedev_Morpher_Helper_Data::FLAG_MASCULINE`AnimateД`Emagedev_Morpher_Helper_Data::FLAG_ANIMATE`InanimateВ`Emagedev_Morpher_Helper_Data::FLAG_INANIMATE`CommonТ`Emagedev_Morpher_Helper_Data::FLAG_COMMON`NameП`Emagedev_Morpher_Helper_Data::FLAG_NAME`### Юнит тесты

[](#юнит-тесты)

Основная логика покрыта, для запуска нужен модуль EcomDev\_PHPUnit

### To Do:

[](#to-do)

- Покрыть тестами логику имен
- Добавить кейс для предложно-падежных форм для мест (теги &lt;где&gt;, &lt;куда&gt; и &lt;откуда&gt;)
- Добавить кейс для прилагательных

---

> **N.B. Не забывайте модифицировать ключи кэша для корректной работы с числами.**

> **N.B. Так как функции модуля - косметические, модуль *как правило* не поднимает ошибок. Если что-то работает некорректно, стоит посмотреть в логи.**

> **Описание API тут: **

*Все совпадения с реальными лицами в примере случайны.*

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 89.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~75 days

Total

3

Last Release

2948d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/bef6cae27069622e7f221863728a7c864134cc8f7d142a989d1fcf15bef367d8?d=identicon)[dantaeusb](/maintainers/dantaeusb)

![](https://www.gravatar.com/avatar/fdd3558913f0c45d83efdd87c9ef6b766d2f0ef82e838ad76060219588a7849d?d=identicon)[hws47a](/maintainers/hws47a)

---

Top Contributors

[![dantaeusb](https://avatars.githubusercontent.com/u/4356112?v=4)](https://github.com/dantaeusb "dantaeusb (33 commits)")[![hws47a](https://avatars.githubusercontent.com/u/604641?v=4)](https://github.com/hws47a "hws47a (2 commits)")[![kiroll126](https://avatars.githubusercontent.com/u/25399110?v=4)](https://github.com/kiroll126 "kiroll126 (2 commits)")

### Embed Badge

![Health badge](/badges/emagedev-morpher/health.svg)

```
[![Health](https://phpackages.com/badges/emagedev-morpher/health.svg)](https://phpackages.com/packages/emagedev-morpher)
```

###  Alternatives

[inviqa/magento-symfony-container

Provides Magento with an instance of a Symfony DI Container

2436.5k](/packages/inviqa-magento-symfony-container)[tim-reynolds/magento-qconfig

Magento config quick search

513.0k](/packages/tim-reynolds-magento-qconfig)[fastly/cdn

Fastly CDN module for Magento 1.x

275.5k](/packages/fastly-cdn)[clerk/magento

Clerk.io Turns More Browsers Into Buyers

1029.4k](/packages/clerk-magento)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
