jefs42 / libretranslate
开源LibreTranslate项目的PHP接口
Requires
- php: ^7.0|^8.0
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^9.5
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和可选的port、source和/或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');
设置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 */