livevasiliy / transliterate
laravel 的转写包
Requires
- php: ^8.1
- ext-intl: *
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- brainmaestro/composer-git-hooks: ^2.8
- friendsofphp/php-cs-fixer: ^3.9
- orchestra/testbench: >=6.0
- phpunit/phpunit: >=9.0
This package is auto-updated.
Last update: 2024-09-14 00:01:56 UTC
README
一个小型转写包,可以将西里尔字母转换为拉丁字母,并允许创建自己的转写映射。
预安装的映射
- 俄语
- 默认
- ГOST 7.79 2000
- 乌克兰语
- 国家
这是一个带有 Laravel 11 支持的分支版本。原始测试已成功通过。
系统要求
- laravel >= 5.6
- ext-intl
安装原始版本
> composer require elforastero/transliterate
安装 Laravel 11 及以上版本
> composer require livevasiliy/transliterate
⚠️ 对于 Laravel v5,请使用 v2 分支:
composer require elforastero/transliterate "^2.0"
从版本 5.5 开始,Laravel 不需要额外配置,因为有了包发现机制。
如果您不使用包发现,需要注册 Service Provider
,将其添加到配置文件 app.php
中的 providers
数组中。
ElForastero\Transliterate\ServiceProvider::class,
如果您想使用别名,请将其添加到 app.php
中的 facades
数组中。
建议使用 Transliterate
作为别名,以避免与 Intl 扩展的 Transliterator 类冲突。
'Transliterate' => ElForastero\Transliterate\Facade::class,
配置
要复制配置 transliterate.php
到 configs
目录,请执行
> php artisan vendor:publish --provider="ElForastero\Transliterate\ServiceProvider"
使用
您可以使用门面进行转写。
use Transliterate; Transliterate::make('Двадцать тысяч льё под водой'); // "Dvadcat tisyach lyo pod vodoy"
可以将替代的转写映射作为第二个参数传递。
use ElForastero\Transliterate\Transliterator; $transliterator = new Transliterator(Map::LANG_RU, Map::GOST_7_79_2000); $transliterator->make('Двадцать тысяч льё под водой'); // "Dvadcat` ty'syach l`yo pod vodoj"
生成 URL
slugify
方法生成 URL,从字符串中删除所有标点符号,并用破折号替换空格。
Transliterate::slugify('Съешь еще этих мягких французских булок, да выпей чаю!'); // sesh-eshhe-etih-myagkih-francuzskih-bulok-da-vipey-chayu
创建转写映射
每个映射都是一个关联数组,其中包含要替换的符号作为键,以及它们将被替换成的值。
映射以返回数组的独立文件的形式创建。
// /resources/maps/ua/ukraine.php return [ 'ї' => 'i', 'і' => 'i', 'є' => 'ie', ];
将创建的映射的路径添加到配置文件 transliterate.php
中的 maps
数组中。
'ua' => [ 'ukraine' => dirname(__DIR__) . '/resources/maps/ua/ukraine.php', ]
之后就可以使用这个映射了。
$transliterator = new Transliterator('ua', 'ukraine'); $transliterator->make('Ваша транслітерація');
创建转换器
转换器 - 将自动应用于转写结果的功能。如果您需要每次都执行相同的操作,这非常有用。转换器在 transformers
数组中注册。
例如,可以自动删除末尾的空格。
ElForastero\Transliterate\Transformer::register(\Closure::fromCallable('trim')),
或者将字符串转换为小写。
ElForastero\Transliterate\Transformer::register(\Closure::fromCallable('trim')), ElForastero\Transliterate\Transformer::register(\Closure::fromCallable('strtolower')),
请注意,转换器在每次调用
Transliterator::make
时都会应用。
开发
要运行 PHPUnit 测试,可以使用根目录下的 Dockerfile
docker-compose up --build ... php_1 | Runtime: PHP 8.0.22 php_1 | Configuration: /srv/app/phpunit.xml php_1 | php_1 | ..... 5 / 5 (100%) php_1 | php_1 | Time: 00:00.959, Memory: 14.00 MB php_1 | php_1 | OK (5 tests, 6 assertions)