benmorel/languagelayer

此包已被放弃,不再维护。未建议替代包。

PHP 的 LanguageLayer API 客户端

0.1.3 2020-08-19 23:26 UTC

This package is auto-updated.

Last update: 2020-11-29 00:52:37 UTC


README

使用 LanguageLayer API 在 PHP 中执行语言检测。

Latest Stable Version License

注意:LanguageLayer 已经不再维护,并且从 2020 年 11 月开始 API 调用开始失败。因此,此库已被存档。

安装

此库可以通过 Composer 安装。

composer require benmorel/languagelayer

要求

此库需要 PHP 7.1 或更高版本。

快速入门

您需要从 LanguageLayer 获取一个免费 API 密钥才能开始。

只需实例化 LanguageLayer 客户端,并开始检测

use BenMorel\LanguageLayer\LanguageLayerClient;

$client = new LanguageLayerClient('YOUR API KEY');

$results = $client->detectLanguages('Some text. Try more than a few words for accurate detection.');

foreach ($results as $result) {
    if ($result->isReliableResult()) {
        echo $result->getLanguageCode();
    }
}

detectLanguages() 方法返回一个 LanguageDetectionResult 对象数组,您可以通过检查每个检测到的语言来决定如何处理。

使用 https

如果您有支持此功能的付费计划,您可以使用安全连接来使用 API。

$client = new LanguageLayerClient('YOUR API KEY', true);

检测单一语言

作为便利,detectLanguage() 方法可以帮助您从文本中检测单一语言。

$languageCode = $client->detectLanguage('Some text. Try more than a few words for accurate detection.');

此方法遍历结果以找到单个 可靠的 结果。如果没有可靠的单一结果,但 API 返回了单个结果,它也会接受它,除非第二个参数 $forceReliable 设置为 true。

$languageCode = $client->detectLanguage('...', true); // will not accept a single result, if not "reliable"

如果没有找到单一可接受的结果,则会抛出 LanguageDetectionException

错误处理

任何类型的错误——HTTP 错误、API 返回的错误或与此库相关的任何其他类型的错误——都会抛出 LanguageDetectionException

因此,您应该将所有 detectLanguage()detectLanguages() 调用包装在 try/catch 块中。

use BenMorel\LanguageLayer\LanguageDetectionException;

// …

try {
    $languageCode = $client->detectLanguage('...');
catch (LanguageDetectionException $exception) {
    // deal with it.
}

如果异常是由 HTTP 错误引起的,您可以通过调用 $exception->getPrevious() 检查底层的 Guzzle 异常(如果需要)。

如果异常是由 LanguageLayer API 本身返回的错误引起的,您可以通过 $exception->getCode()$exception->getType() 检查它,以及异常消息。

例如,您可以对特定的 API 错误采取行动

try {
    $languageCode = $client->detectLanguage('...');
} catch (LanguageDetectionException $exception) {
    switch ($exception->getType()) {
        case 'invalid_access_key':
        case 'usage_limit_reached':
            // report the error!
            break;

        case 'rate_limit_reached':
            // slow down!
        
        // ...
    }
}

注意:如果异常不是由 API 返回的错误引起的,则 getType() 将返回 null

有关错误代码和类型的列表,请参阅 LanguageLayer 文档