oblik / 复数化
根据 Unicode 的复数化
1.4.0
2022-06-10 05:27 UTC
Requires (Dev)
- phpunit/phpunit: ^8.3
README
此包允许您根据 Unicode 中定义的语言复数规则获取单词的正确复数形式。您可以获取基数词和序数词的形式,以及基数词的范围形式。
要检查支持的语言,请查看 src 文件夹。如果您需要其他语言,请创建一个问题或拉取请求。
安装
使用 Composer
composer require oblik/pluralization
用法
有 六个复数类别,每个类别用一个常量表示:ZERO
、ONE
、TWO
、FEW
、MANY
和 OTHER
。您应在代码中使用这些常量
namespace Oblik\Pluralization { function place($n) { $class = LANGUAGES['en']; $form = $class::getOrdinal($n); switch ($form) { case ONE: return "{$n}st"; case TWO: return "{$n}nd"; case FEW: return "{$n}rd"; case OTHER: return "{$n}th"; } } echo place(1); // 1st echo place(2); // 2nd echo place(103); // 103rd echo place(14); // 14th }
API
每种语言都由一个扩展抽象类 Language
的类表示,并具有以下静态方法
getCardinal($number)
返回基数词的复数形式。
getOrdinal($number)
返回序数词的复数形式。
getRange($start, $end)
返回范围的复数形式。
formName($form)
返回形式常量的字符串名称。
示例
use Oblik\Pluralization\EnglishLanguage; EnglishLanguage::getCardinal(0); // => Oblik\Pluralization\OTHER EnglishLanguage::getCardinal(1); // => Oblik\Pluralization\ONE EnglishLanguage::getCardinal(1.5); // => Oblik\Pluralization\OTHER EnglishLanguage::getCardinal(2); // => Oblik\Pluralization\OTHER EnglishLanguage::getOrdinal(2); // => Oblik\Pluralization\TWO EnglishLanguage::getOrdinal(3); // => Oblik\Pluralization\FEW EnglishLanguage::getOrdinal(4); // => Oblik\Pluralization\OTHER EnglishLanguage::getOrdinal(103); // => Oblik\Pluralization\FEW EnglishLanguage::getRange(0, 2); // => Oblik\Pluralization\OTHER EnglishLanguage::getRange(1, 2); // => Oblik\Pluralization\OTHER EnglishLanguage::formName(Oblik\Pluralization\ZERO); // => "zero" EnglishLanguage::formName(Oblik\Pluralization\ONE); // => "one"
要获取基于语言代码的正确语言类,请使用 LANGUAGES
常量
use const Oblik\Pluralization\LANGUAGES; $lang = LANGUAGES['en']; // => "Oblik\Pluralization\EnglishLanguage" $lang::getCardinal(1); // => Oblik\Pluralization\ONE