avris/polonisator

Avris Localisator 和 Stringer 的扩展,增加了对波兰语的支持

v4.0.1 2018-01-10 13:31 UTC

This package is auto-updated.

Last update: 2024-09-13 15:24:26 UTC


README

Avris Localisator 和 Avris Stringer 的扩展,增加了对波兰语的支持。

安装

composer require avris/polonisator

使用方法

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

StringerTwigPolonisatorTwig 可以注册为 Twig 扩展。

decline

在波兰语中,复数形式并不简单——可以说 "zdobyłeś 1 punkt", "2 punkty" 和 "5 punktów"。 decline 根据提供的数字选择正确的形式

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

还提供了翻译选择器

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

使用方法如下

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

vocative

{{ user.firstName|vocative }}

vocative 将波兰语的名字变为呼唤语,无需数据库中包含所有名字(已测试超过1000个名字)。

getGender

getGender 尝试根据名字猜测一个人的性别(除非在 $person->getGender() 中明确提供)。

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

还提供了翻译选择器

said: <gender> powiedział|powiedziała

genderify

genderify 自动调整一些第二人称表达以匹配接收者的性别(对邮件很有用)。

{% 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 %}

可能对某些用户返回

Drogi Tomku!

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

Pozdrawiamy,

xyz

可用标签

标签男性女性
{_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

此列表可以通过在 Genderify 构造函数中传递不同的列表进行扩展/更改。

numberInWords

请参阅 Avris Stringer 的文档。

提供波兰语翻译,例如

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

请参阅 Avris Stringer 的文档。

提供波兰语翻译,例如

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

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

请参阅 Avris Stringer 的文档。

提供波兰语翻译,例如:"pięć lat temu", "dwadzieścia pięć dni temu", "półtorej godziny temu", "minutę temu", "teraz", "za trzy dni"。

phone

请参阅 Avris Stringer 的文档。

提供 +48 号码的格式化。

框架集成

Micrus

在您的 App\App:registerModules 中注册 Localisator、Stringer 和 Polonisator 模块

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

并且应该直接可以使用:容器中的 Avris\Stringer\StringerAvris\Polonisator\Polonisator,以及已注册的 Twig 扩展。

Symfony

示例 services.yaml 配置

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: ~

版权