ironsmile/php-translit

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

资助包维护!
ironsmile

v1.0.2 2017-05-31 10:10 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:31:32 UTC


README

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

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

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

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

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

产生输出

Bielaruś vs Bielarus

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

// 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;

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

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