jefs42/libretranslate

开源LibreTranslate项目的PHP接口

v1.1.2 2023-03-26 02:21 UTC

This package is auto-updated.

Last update: 2024-09-19 00:48:15 UTC


README

PHP接口,用于开源LibreTranslate项目

安装

Composer(推荐)

composer require jefs42/libretranslate
require('vendor/autoload.php');

use Jefs42\LibreTranslate;

$translator = new LibreTranslate();

手动

从src/目录下下载LibreTranslate.php文件,并将其放置在项目中的某个位置。

在项目中包含该文件

require_once("path/to/LibreTranslate.php");

use Jefs42\LibreTranslate;

$translator = new LibreTranslate();

使用方法

默认情况下,此类将尝试连接到并使用位于http://localhost:5000的本地LibreTranslate服务器

传递host和可选的portsource和/或target参数以覆盖默认值。

// use locally installed LibreTranslate server on port 5000 with default language settings
$translator = new LibreTranslate();

// specify server with alternate port
$translator = new LibreTranslate("https://libretranslate", 5042);

// use localhost, default port, but override default languages used in translations
$translator = new LibreTranslate(null, null, 'de', 'it');

LibreTranslate镜像

设置API密钥

根据服务器设置,您可能需要提供一个有效的API密钥来发送翻译请求。

$translator->setApiKey('xxxxx-xxxxx-xxxxx');

设置默认语言

默认源语言和目标语言由服务器设置。您可以在构建类时或根据需要覆盖这些设置

// Set to translate from English to Swedish
$translator->setLanguages('en', 'sv');

// change only one - source or target
$translator->setSource('es');

$translator->setTarget('ru');

每个翻译函数还支持在调用函数时指定要使用的语言。

检测语言

LibreTranslate将尝试确定传递给它的字符串的语言。

$lang = $translator->detect("mi nombre es jefs42");
// expected result: $lang = 'es'

翻译文本

翻译一段文本或多个文本的数组。服务器可能已设置字符限制。对于较长的文本,请参阅“翻译文件”。

// translate text using current default source/target languages
$translatedText = $translator->translate("My name is jefs42");

// specifally request languages to use in translation.
// eg. from English to German
$translatedText = $translator->translate("My name is jefs42", "en", "de");

// translate multiple texts in one call
// returns array of translated texts
$translatedText = $translator->translate(["My name is jefs42", "Where is the bathroom?"]);

翻译文件

翻译文本文件。

检查 $translator->Settings(),当前支持的格式似乎为 - .txt, .odt, .odp, .docx 和 .pptx

// translate file using current default source/target languages
$translatedText = $translator->translateFile("/full/path/to/file.txt");

// translate file with specific source/target languages
// eg. from English to Italian
$translatedText = $translator->translateFile("/full/path/to/file.txt", "en", "it");
  • 翻译服务器可能对POST/file大小设置最大限制。
  • 如果用于Web表单,可以传递 $_SERVER['FILES']['formfield']['tmp_name']。

建议

向服务器提交建议的翻译。

// Submit suggestion using current source/target language
$translator->suggest('My name is jefs42', 'Mi nombre es jefs42');

// Specify languages for suggestion
$translator->suggest('My name is jefs42', 'Mi chiamo jefs42', 'en', 'it');

必须在LibreTranslate服务器上启用建议。

获取可用语言

获取当前服务器上可用的语言列表。

$languages = $translator->Languages();
/*
Returns array of language codes/names:
[en] => 'English',
[it] => 'Italian',
...
*/

检查服务器设置

获取当前服务器正在运行的设置。

$settings = $translator->Settings();
/*
Returns array of settings and their current values:
[api_keys] => 1,
[keyRequired] => ,
[char_limit] => -1,
...
*/

有关服务器设置,请参阅LibreTranslate参数

LTManage

如果您运行的是本地托管的LibreTranslate服务器,您可能可以访问ltmanage。这允许您查看当前密钥及其请求限制,以及创建新密钥和删除当前密钥。

有关详细信息,请参阅LibreTranslate管理密钥

如果ltmanage在本地路径中找到,则以下附加功能将可用于使用:

listKeys

将返回当前密钥及其请求限制的数组。

$keys = $translator->listKeys();
/*
Returns array of current keys and limits:
[
    'key1' => '500',
    'key2' => '50',
    ...
]
*/

addKey

创建带有可选请求限制的新本地服务器密钥。

// create a new key limited to server defaults
$key = $translator->addKey();

// create a new key with a specific request limit (higher or lower than server default)
$key = $translator->addKey(400); // limit to 400 requests per minute

/*
Returns string of new key:
"xxxxx-xxxx-xxxx"
*/

removeKey

从可用密钥中删除现有密钥。

try {
    $translator->removeKey("xxxxx-xxxxx-xxxxx");
} catch (Exception $e) {
    // key doesn't exist
}
/*
Returns true on deletion
*/