zvermafia/transliteration

乌兹别克拉丁文 <=> 西里尔文转写器

v0.1.0 2020-02-17 19:44 UTC

This package is auto-updated.

Last update: 2024-09-26 02:13:57 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

乌兹别克拉丁文 <=> 西里尔文转写器。在内部,它使用一些在线转写服务。但它可扩展!

按部分导航

安装

通过 Composer

$ composer require zvermafia/uzbek-transliterator

用法

默认情况下,有两个实现供您选择

  1. Zvermafia\Transliteration\AlifTransliterator 使用 alif.uz 在线转写服务的 API;
  2. Zvermafia\Transliteration\LotinTransliterator 使用 lotin.uz 在线转写服务的 API;

您还可以实现自己的类,该类将使用另一个服务的 API 或不使用任何服务的 API,并自行完成所有工作。

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

// Initialize the object
$transliterator = new Zvermafia\Transliteration\AlifTransliterator(); // or you can use LotinTransliterator

$transliterator->setText("Salom, dunyo!")
    ->toCyrillic()
    ->translit();

echo $transliterator->getResult(); // it will output: Салом, дунё!

创建自己的实现(扩展)

如果这两个现有的实现还不够,那么您可以通过实现自己的转写类来扩展该包的功能。如果是这样,有三种可能的方式

  1. 通过实现一个 Zvermafia\Transliteration\Interfaces\TransliteratorInterface 接口来创建一个类。在这种情况下,您必须从头开始自己实现接口中定义的所有方法;
  2. 这是推荐的方式(如果您不打算使用带有 HTTP 的第三方 API)。通过扩展 Zvermafia\Transliteration\Abstracts\TransliteratorAbstract 抽象类来创建一个类。在这种情况下,您必须实现那些尚未由抽象类实现的方法。抽象类已经实现了接口的公共方法;
  3. 这与前一种方法类似。因为在这种情况下,您将使用一个扩展了 Zvermafia\Transliteration\Abstracts\TransliteratorAbstractZvermafia\Transliteration\Abstracts\HttpTransliteratorAbstract 抽象类。但区别是什么?区别在于这个抽象类实现了通过 cURL 扩展与 HTTP 一起工作的公共方法。所以您只需配置一些特定的 HTTP 请求参数来与 API 一起工作。

以下是一些示例。

第1点的示例

<?php

namespace Whatever\Namespace;

use Zvermafia\Transliteration\Interfaces\TransliteratorInterface;

// point #1
class MyTransliterator implements TransliteratorInterface
{
    // realize all the methods defined in the interface (
}

第2点的示例

<?php

namespace Whatever\Namespace;

use Zvermafia\Transliteration\Abstracts\TransliteratorAbstract;
use Zvermafia\Transliteration\Interfaces\TransliteratorInterface;

// point #1
class MyTransliterator extends TransliteratorAbstract
{
    public function translit(): : TransliteratorInterface
    {
        $text = $this->getText();
        // $result = ... // here translit the text
        $this->setResult($result);

        return $this;
    }
}

第3点的示例

作为此点的示例,您可以查看 Zvermafia\Transliteration\AlifTransliteratorZvermafia\Transliteration\LotinTransliterator 的源代码。

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

测试

$ composer test

贡献

请参阅 CONTRIBUTINGCODE_OF_CONDUCT 了解详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 mohirjon@gmail.com 报告,而不是使用问题跟踪器。

致谢

许可证

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