承接 avris/polonisator 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

avris/polonisator

Composer 安装命令:

composer require avris/polonisator

包简介

An extension to Avris Localisator and Stringer introducing support for the Polish language

README 文档

README

An extension to Avris Localisator and Avris Stringer introducing support for the Polish language.

Installation

composer require avris/polonisator

Usage

$builder = (new LocalisatorBuilder())
    ->registerExtension(new LocalisatorExtension('pl'))
    ->registerExtension(new StringerExtension())
    ->registerExtension(new PolonisatorExtension());
    
$stringer = $builder->build(Stringer::class);
$polonisator = $builder->build(Polonisator::class);

StringerTwig and PolonisatorTwig can be registered as Twig extensions.

decline

Pluralisation is not so straight-forward in Polish -- one can say "zdobyłeś 1 punkt", "2 punkty" and "5 punktów". decline takes care of choosing the right form based on a provided number:

Zdobyłeś {{ points }} punkt{{ points|decline('','y','ów') }}

It also provides a translation selector:

points: <polishDeclination> punkt|%count% punkty|%count% punktów

used like this:

{{ 'points'|l({count: points}) }}

vocative

{{ user.firstName|vocative }}

This declines Polish first names into a vocative, without a need for a database with all the names (tested on over a 1000 names).

getGender

getGender tries to guess a person's gender based on their name (unless explicitly provided in $person->getGender()).

$polonisator->getGender($person); // returns either Stringer::MASCULINE or Stringer::FEMININE

It also provides a translation selector:

said: <gender> powiedział|powiedziała

genderify

genderify automatically adjusts some 2nd person expressions to match the recipients gender (useful for mailings).

{% filter genderify(user.gender) %}
<p>
    Drog{_I_A} {{ user.firstName|vocative|capitalize }}!<br/>
    Chcielibyśmy Cię poinformować, że zdobył{_ES_AS} {{ user.points }}
    {{ user.points|decline('punkt','punkty','punktów') }}!<br/>
</p>
<p>
    Pozdrawiamy,<br/>
    xyz
</p>
{% endfilter %}

Might return for some user:

Drogi Tomku!

Chcielibyśmy Cię poinformować, że zdobyłeś 932 punkty!

Pozdrawiamy,

xyz

Available tags:

TagMaleFemale
{_A}a
{_I_A}ia
{_ES_AS}
{_Y_A}ya
{_AL_ELA}ąłęła
{_CHCIALBY}chciałbychciałaby
{_POWINIEN}powinienpowinna
{_MOGL}mógłmogła
{_WSZEDL}wszedłweszła
{_PAN_PANI_M}PanPani
{_PAN_PANI_C}PanuPani
{_PAN_PANI_D}PanaPani
{_PAN_PANI_B}PanaPanią
{_PAN_PANI_N}PanemPanią
{_PAN_PANI_W}PaniePani

This list can be expanded / changed by passing a different one into Genderify's constructor.

numberInWords

See in Avris Stringer's documentation.

Provides Polish translations, like:

375 → trzysta siedemdziesiąt pięć
-279 → minus dwieście siedemdziesiąt dziewięć
146 → sto czterdzieści sześć
10000000 → dziesięć milionów
5371.18 → pięć tysięcy trzysta siedemdziesiąt jeden i osiemnaście setnych
5678 → pięć i sześćset siedemdziesiąt osiem tysięcznych
0.1 → jedna dziesiąta
0.000908 → zero komma zero zero zero dziewięć zero osiem

timeInWords

See in Avris Stringer's documentation.

Provides Polish translations, like:

$stringer->timeInWords($time, TimeInWords::MODE_NICE) (default):

14:15:16 → kwadrans po czternastej.
05:13:32 → trzynaście po piątej.
19:49:20 → za jedenaście dwudziesta.
11:53:11 → za siedem południe.

$stringer->timeInWords($time, TimeInWords::MODE_SHORT):

14:15:16 → czternasta piętnaście.
05:13:32 → piąta trzynaście.
19:49:20 → dziewiętnasta czterdzieści dziewięć.
11:53:11 → jedenasta pięćdziesiąt trzy.

$stringer->timeInWords($time, TimeInWords::MODE_LONG):

14:15:16 → czternasta piętnaście i szesnaście sekund.
05:13:32 → piąta trzynaście i trzydzieści dwie sekundy.
19:49:20 → dziewiętnasta czterdzieści dziewięć i dwadzieścia sekund.
11:53:11 → jedenasta pięćdziesiąt trzy i jedenaście sekund.

timeDiff

See in Avris Stringer's documentation.

Provides Polish translations, like: "pięć lat temu", "dwadzieścia pięć dni temu", "półtorej godziny temu", "minutę temu", "teraz", "za trzy dni".

phone

See in Avris Stringer's documentation.

Provides formatting of +48 numbers.

Framework integration

Micrus

In your App\App:registerModules register the Localisator, Stringer and Polonisator module:

yield new \Avris\Localisator\LocalisatorModule;
yield new \Avris\Stringer\StringerModule;
yield new \Avris\Polonisator\PolonisatorModule;

And it should work out of the box: Avris\Stringer\Stringer and Avris\Polonisator\Polonisator available in the container and the Twig extensions registered.

Symfony

Example servies.yaml config:

Avris\Localisator\LocalisatorBuilder:
    calls:
        - [registerExtension, ['@Avris\Localisator\LocalisatorExtension']]
        - [registerExtension, ['@Avris\Polonisator\PolonisatorExtension']]
        - [registerExtension, ['@Avris\Stringer\StringerExtension']]
Avris\Localisator\LocalisatorExtension:
    arguments:
        $locale: '%locale%'
Avris\Polonisator\PolonisatorExtension: ~
Avris\Stringer\StringerExtension: ~

Avris\Localisator\LocalisatorInterface:
    factory: ['@Avris\Localisator\LocalisatorBuilder', build]
    arguments: ['Avris\Localisator\LocalisatorInterface']
Avris\Localisator\LocalisatorTwig: ~

Avris\Stringer\Stringer:
    factory: ['@Avris\Localisator\LocalisatorBuilder', build]
    arguments: ['Avris\Stringer\Stringer']
Avris\Stringer\StringerTwig: ~
Avris\Polonisator\Polonisator:
    factory: ['@Avris\Localisator\LocalisatorBuilder', build]
    arguments: ['Avris\Polonisator\Polonisator']
Avris\Polonisator\PolonisatorTwig: ~

Copyright

统计信息

  • 总下载量: 211
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-01-09

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固