elforastero / transliterate
为laravel的转写包
Requires
- php: ^8.2
- 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-17 04:53:29 UTC
README
一个小型转写包,可以将西里尔字母转换为拉丁字母,并允许创建自定义的转写映射。
预置映射
- 俄语
- 默认
- GB 7.79-2000
- 乌克兰语
- 国家
系统要求
- laravel >= 5.6
- ext-intl
安装
> composer require elforastero/transliterate
⚠️ 对于Laravel v5,请使用v2分支:
composer require elforastero/transliterate "^2.0"
Laravel从版本5.5开始不需要额外的配置,因为有了包发现机制。
如果您不使用包发现,则需要注册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)