ashtokalo/php-translit

PHP库,用于将文本从一种脚本转换为另一种脚本。

0.3.0 2024-03-01 19:44 UTC

This package is auto-updated.

Last update: 2024-08-30 20:53:21 UTC


README

translit 是一个 PHP 库,用于将文本从一种脚本转换为另一种脚本。目前它假设将西里尔文、格鲁吉亚文、亚美尼亚文和希腊文转换为罗马(拉丁)文。西里尔文有针对俄语、乌克兰语、白俄罗斯语、保加利亚语和哈萨克语的子群,并具有自定义规则。

安装

此软件包可以通过 Composer 安装

$ composer require ashtokalo/php-translit

请确保使用 Composer 的自动加载

require __DIR__.'/../vendor/autoload.php';

用法

主类 Translit 可以作为单例或对象本身使用。内置转写表可以通过以下语言代码进行引用

  • ru - 俄语西里尔文字符,
  • uk - 乌克兰语西里尔文字符,
  • mk - 马其顿语西里尔文字符,
  • be - 白俄罗斯语西里尔文字符(转换为带有重音的拉丁文),
  • bg - 保加利亚语西里尔文字符(转换为带有重音的拉丁文),
  • kk - 哈萨克语西里尔文字符(转换为带有重音的拉丁文),
  • ka - 格鲁吉亚字符,
  • hy - 亚美尼亚字符(转换为带有重音的拉丁文),
  • el - 希腊字符(转换为带有重音的拉丁文),
  • cyrillic - 根据 ISO 9:1995 的所有西里尔文字符,
  • latin - 只有不带重音的拉丁字符,
  • ascii - 只有 ASCII 字符,所有非 ASCII 字符将被替换为问号。

语言代码可以通过逗号组合起来处理更多情况,例如

echo \ashtokalo\translit\Translit::object()->convert('Беларусь', 'be') . ' vs ' .
    \ashtokalo\translit\Translit::object()->convert('Беларусь', 'be,latin');

生成输出

Bielaruś vs Bielarus

您也可以通过 classes 属性添加替代转写表,该属性是语言代码键和类名值的列表

$translit = new \ashtokalo\translit\Translit;
$translit->classes['tlh'] = \startrek\TranslitKlingon::class;
echo $translit->convert(' ', 'tlh');

默认情况下,忽略错误的语言代码。但可以通过使用严格模式来改变这种行为。对于所有以感叹号开头的语言代码,如果出现任何错误(没有转换表、格式错误、为空),将引发异常。例如

// following code returns 'Привет' as is because handler ru_ru not defined
echo Translit::object()->convert('Привет', 'ru_ru') . PHP_EOL;

// but next code fires Exception, because strict mode have used
echo Translit::object()->convert('Привет', '!ru_ru') . PHP_EOL;

测试

该软件包包含集成测试。您可以使用 PHPUnit 运行它们。

$ vendor/bin/phpunit

致谢

所有转写表都是从维基百科找到的信息创建的。这些页面的链接被放置在每个文件的标题中。如果发现任何错误或有新的转写表要添加,请通知我。

这些表有许多来源可以用来 - ISO 和 BGN/PCGN 标准、许多本地标准以及人们使用的非正式标准。对于这个库,我假设以下顺序的来源 - 本地、ISO、BGN/PCGN、非正式。

贡献

非常欢迎贡献。

仅接受通过 Github 的拉取请求进行的贡献

  • PSR-2 编码标准

  • 记录任何行为变化 - 确保将 README.md 和任何其他相关文档保持最新。

  • 创建功能分支 - 不要要求我从您的 master 分支拉取。

  • 每个功能一个拉取请求 - 如果您想做更多的事情,请发送多个拉取请求。

  • 发送连贯的历史记录 - 确保您的拉取请求中的每个单独提交都有意义。如果您在开发过程中必须进行多个中间提交,请在提交之前请压缩它们

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可