it-blaster/ru-strings-bundle

名词格变位和与数量的结合

安装量: 14,201

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 11

分支: 2

开放问题: 0

类型:symfony-bundle

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

This package is not auto-updated.

Last update: 2024-09-14 18:31:37 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, 'автомобилей', 'автомобиль', 'автомобиля') }} {# автомобилей #}

其他语言的三元操作符列表 https://gnu.ac.cn/software/gettext/manual/html_mono/gettext.html#Plural-forms

方法 plural 不使用缓存。