it-blaster/ru-strings-bundle

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

Installs: 14 072

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 11

Forks: 2

Open Issues: 0

Type:symfony-bundle

dev-master 2017-02-03 11:49 UTC

This package is not auto-updated.

Last update: 2024-04-13 16:12:52 UTC


README

Склонение по падежам и сопряжение с числом в twig + сервис для Symfony2. Для кеширования используется Redis.

Пример

{% set auto_count = 223 %}
{% set surface = 'белый снег' %}
Проехали {{ auto_count }} {{ plural(auto_count, 'автомобилей', 'автомобиль', 'автомобиля') }} по {{ surface | inflect('datv') }}

{# Проехали 223 автомобиля по белому снегу #}

Установка

composer require it-blaster/ru-strings-bundle

Добавить в AppKernel.php

<?php
// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        // ...
        new Etfostra\RuStringsBundle\EtfostraRuStringsBundle(),
    );
}

Настройка

Доступные параметры в config.yml:

etfostra_ru_strings:
    redis_cache_ttl: 2592000 #Время жизни кеша в секундах
    pyphrasy_api_url: https://pyphrasy.herokuapp.com/inflect #API URL 

Примеры использования

Склонение по падежам

$inflector = $this->get('ru_strings.case');

$inflector->inflect('белый снег', 'gent'); //белого снега
$inflector->inflect('белый снег', 'datv'); //белому снегу
$inflector->inflect('белый снег', 'accs'); //белый снег
$inflector->inflect('белый снег', 'ablt'); //белым снегом
$inflector->inflect('белый снег', 'loct'); //белом снеге
$inflector->inflect('белый снег', 'voct'); //белый снег

Склонение по падежам в Twig

{{ 'белый снег' | inflect('gent') }} {# белого снега #}
{{ 'белый снег' | inflect('datv') }} {# белому снегу #}
{{ 'белый снег' | inflect('accs') }} {# белый снег #}
{{ 'белый снег' | inflect('ablt') }} {# белым снегом #}
{{ 'белый снег' | inflect('loct') }} {# белом снеге #}
{{ 'белый снег' | inflect('voct') }} {# белый снег #}

Полный список опций склонения http://opencorpora.org/dict.php?act=gram

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

$pluralizer = $this->get('ru_strings.plural');

$pluralizer->plural(101, 'автомобилей', 'автомобиль', 'автомобиля'); //автомобиль
$pluralizer->plural(102, 'автомобилей', 'автомобиль', 'автомобиля'); //автомобиля
$pluralizer->plural(100, 'автомобилей', 'автомобиль', 'автомобиля'); //автомобилей

Согласование с числом в Twig

{{ plural(101, 'автомобилей', 'автомобиль', 'автомобиля') }} {# автомобиль #}
{{ plural(102, 'автомобилей', 'автомобиль', 'автомобиля') }} {# автомобиля #}
{{ plural(100, 'автомобилей', 'автомобиль', 'автомобиля') }} {# автомобилей #}

Список тернарных операторов для других языков http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#Plural-forms

Метод plural не использует кеширование.