API сайта morpher.ru для Magento 1.9
Склонятор для Magento
Этот модуль позволит склонять слова в зависимости от контекста с помощью онлайн
сервиса morpher.ru. Первый запрос осуществляется через REST API, дальнейшие - из
кэша в базе данных, что позволяет не нагружать сервис лишними запросами (они ограничены
по бесплатной и платной подпискам)., (*1)
Может быть полезно для склонения количеств товаров или имен пользователей, ну и для чего-нибудь ещё., (*2)
Все передаваемые в модуль слова и фразы должны быть в именительном падеже, (*3)
Использование с числами
# Mage::helper('morpher')->inflectWordByNumber($number, $phrase [, $keepNumber = false [, $translate = false ]]), (*4)
Функция поможет склонять слова рядом с числами, например, для количества товаров в каталоге или корзине., (*5)
-
$number
определяет число, относительно которого нужно склонить слово
-
$phrase
определяет фразу или слово для склонения
-
$keepNumber
определяет, стоит ли оставлять число перед словом или фразой
-
$translate
определяет, необходимо ли переводить слово или фразу перед склонением, и каким модулем (может быть строкой, например yourmoule
, или логическим значением)
Пример:, (*6)
Mage::helper('morpher')->inflectWordByNumber(5, 'item', true, 'catalog');
Вернет:, (*7)
5 товаров, (*8)
Mage::helper('morpher')->inflectWordByNumber(1, 'piece', false, 'yourmodule');
Вернет:, (*9)
1 штука, (*10)
В вашем модуле thing
должно быть переведено как штука
, (*11)
Склонение имён
# Mage::helper('morpher')->inflectName($name, $inflection [, $flags = array()]), (*12)
Функция поможет склонять имена ваших пользователей., (*13)
-
$name
имя пользователя
-
$inflection
склонение
-
$flags
определяет дополнительные флаги для более точного склонения
API неплохо различает имена, но если есть возможность, следует указать род в флагах или использовать следующие методы:, (*14)
-
inflectMaleName($name, $inflection [, $flags = array()])
для мужских
-
inflectFemaleName($name, $inflection [, $flags = array()])
для женских
Пример:, (*15)
Mage::helper('morpher')->inflectMaleName('Ломоносов, Михаил Васильевич', Emagedev_Morpher_Helper_Data::DATIVE);
Вернет:, (*16)
Ломоносову, Михаилу Васильевичу, (*17)
Mage::helper('morpher')->inflectFemaleName('Любовь Эдуардовна Соболь', Emagedev_Morpher_Helper_Data::GENITIVE);
Вернет:, (*18)
Любови Эдуардовны Соболь, (*19)
Общий случай
# Mage::helper('morpher')->inflectWord($phrase, $inflection [, $multi = false [, $flags = array() [, $translate = false ]]]), (*20)
Функция склоняет слово с заданными параметрами., (*21)
-
$phrase
фраза или слово для склонения
-
$inflection
склонение
-
$multi
определяет множественное ли число
-
$flags
определяет дополнительные флаги для более точного склонения
-
$translate
определяет, необходимо ли переводить слово или фразу перед склонением, и каким модулем (может быть строкой, например yourmoule
, или логическим значением)
Авторизация на morpher.ru
Авторизация необходима для расширения лимита на склонение слов.
Ваш логин и пароль вы можете ввести в панели управления в конфигурации.
Настройки расположены в группе API (в стандартном переводе СЕРВИСЫ
) во
вкладке API сайта morpher.ru
., (*22)
Шпаргалка
# Склонения
Если ваш кодстайл не позволяет напрямую использовать кириллицу в коде, для склонений есть алиасы,
записанные как константы в хелпере Emagedev_Morpher_Helper_Data
., (*23)
Падеж |
Символ |
Алиас |
Именительный |
И |
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 |
# Флаги
Нужны для повышения качества склонения.
Есть слова, которые могут склоняться по-разному, например:, (*24)
- Фамилия Резник склоняется у мужчин и не склоняется у женщин;
- Ростов в творительном падеже будет Ростовым, если это фамилия, и Ростовом, если это город;
- тестер в винительном падеже будет тестера, если это человек, и тестер, если имеется в виду прибор.
Методы inflectName
, inflectMaleName
, inflectFemaleName
используют необходимые флаги по умолчанию, (*25)
Флаг |
Описание |
Алиас |
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, (*26)
To Do:
- Покрыть тестами логику имен
- Добавить кейс для предложно-падежных форм для мест (теги где, куда и откуда)
- Добавить кейс для прилагательных
N.B. Не забывайте модифицировать ключи кэша для корректной работы с числами., (*27)
N.B. Так как функции модуля - косметические, модуль как правило не поднимает ошибок. Если что-то работает некорректно, стоит посмотреть в логи., (*28)
Описание API тут: http://morpher.ru/ws3/, (*29)
Все совпадения с реальными лицами в примере случайны., (*30)