benmorel / languagelayer
PHP 的 LanguageLayer API 客户端
Requires
- php: >=7.1
- ext-json: *
- guzzlehttp/guzzle: ^6.0 || ^7.0
This package is auto-updated.
Last update: 2020-11-29 00:52:37 UTC
README
使用 LanguageLayer API 在 PHP 中执行语言检测。
注意: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 文档。