rw/translation

此包已被弃用且不再维护。作者建议使用revenuewire/translation包。

RW 翻译服务

5.0.0 2024-09-05 22:58 UTC

README

Build Status Coverage Status Latest Stable Version

安装

composer require revenuewire/translation

描述

使用 DynamoDB 或 Redis 作为缓存选项的翻译服务。我们还集成了两个翻译服务提供商,One Hour TranslationGoogle Cloud Translation

OneHourTranslation 提供人工翻译服务,而 Google Cloud Translation神经机器翻译 (NMT) 收取固定费用。两个服务提供商都提供简单的机器翻译,但本项目不支持。

要求

通常,您可以选择两种配置模式(实时或数据库)。

实时模式

实时模式使用 Google Cloud Translation API 直接将文本翻译为目标语言。您需要一个 Google Cloud 账户和密钥才能使用它。您还需要 Redis 缓存以获得更好的性能。目前尚不支持 memcached

要求摘要
  • Google Cloud 账户
  • Redis
数据库模式

数据库模式使用 AWS DynamoDB 作为存储选择。Redis 建议使用但不是必需的。

要求摘要
  • AWS DynamoDB
  • Redis(可选)

配置

实时模式
$defaultLanguage = "en";
$supportLanguages = ["en", "fr", "zh"];
$redisConfig = [
    "host" => "REDIS_HOST",
    "timeout" => "0.5",
    "port" => "6379",
    "prefix" => "t_2sx_", //optional, to prevent cache key collision
];
$gct = [
    "project" => "GOOGLE_CLOUD_PROJECT_ID",
    "key" => "GOOGLE_CLOUD_PROJECT_KEY"
];
$translationService = new \RW\Translation(null, $supportLanguages, $cache, $defaultLanguage, $gct);

//translate to Simple Chinese
echo $translationService->translate("Hello World", "zh");
print_r($translationService->batchTranslate([
   "hello" => "Hello World",
   "how-s-going" => "How's going?"
],"zh"));
数据库模式
安装
php vendor/revenuewire/translation/bin/cli.php \
    --region=[AWS_REGION] \
    --translation=[TRANSLATION_TABLE] \
    --translation_queue=[TRANSLATION_QUEUE_TABLE] \
    --translation_project=[TRANSLATION_PROJECT_TABLE] \
    init 
用法
$defaultLanguage = "en";
$supportLanguages = ["en", "fr", "zh"];

$dynamoConfig = [
   "region" => "us-west-2",
   "table" => "YOUR TABLE NAME",
   "version" => "2012-08-10"
];

$redisConfig = [
    "host" => "YOUR REDIS HOST",
    "timeout" => "0.5",
    "port" => "6379",
    "prefix" => "t_2sx_", //optional, to prevent cache key collision
];

$translationService = new \RW\Translation($dynamoConfig, $supportLanguages, $cache, $defaultLanguage);

//translate to Simple Chinese
echo $translationService->translate("Hello World", "zh");
print_r($translationService->batchTranslate([
   "hello" => "Hello World",
   "how-s-going" => "How's going?"
],"zh"));

与翻译服务一起工作

一旦您浏览完所有页面,您的翻译表应已收集所有需要翻译的文本。

diff

计算现有文本和目标翻译文本之间的差异。例如,如果您的源表有一个英语单词 "Hello World",以下命令将生成两个队列项,旨在将 "Hello World" 翻译成中文和法语。

php vendor/revenuewire/translation/bin/cli.php \
        --provider=[OTH or GCT] \
        --region=[AWS_REGION] \
        --translation=[TRANSLATION_TABLE] \
        --translation_queue=[TRANSLATION_QUEUE_TABLE] \
        --translation_project=[TRANSLATION_PROJECT_TABLE] \
   	    diff zh fr
add

add 命令将所有待处理项目添加到项目中。这对于与 OneHourTranslation 一起工作很有用,因为 OneHourTranslation 对每批可以安排翻译的文本数量有限制。

php vendor/revenuewire/translation/bin/cli.php \
        --region=[AWS_REGION] \
        --translation=[TRANSLATION_TABLE] \
        --translation_queue=[TRANSLATION_QUEUE_TABLE] \
        --translation_project=[TRANSLATION_PROJECT_TABLE] \
        --oth_pubkey=[ONE_HOUR_TRANSLATION_PUB_KEY] \
        --oth_secret=[ONE_HOUR_TRANSLATION_SECRET] \
        --oth_sandbox=[ONE_HOUR_TRANSLATION_SANDBOX] \
        --gct_project=[GOOGLE_CLOUD_PROJECT] \
        --gct_key=[GOOGLE_CLOUD_KEY] \
        add 
commit

将项目提交给服务提供商。仅 One Hour Translation 支持提交。

php vendor/revenuewire/translation/bin/cli.php \
        --region=[AWS_REGION] \
        --translation=[TRANSLATION_TABLE] \
        --translation_queue=[TRANSLATION_QUEUE_TABLE] \
        --translation_project=[TRANSLATION_PROJECT_TABLE] \
        --oth_pubkey=[ONE_HOUR_TRANSLATION_PUB_KEY] \
        --oth_secret=[ONE_HOUR_TRANSLATION_SECRET] \
        --oth_sandbox=[ONE_HOUR_TRANSLATION_SANDBOX] \
        commit 
push

将翻译后的文本推回到翻译表中。

php vendor/revenuewire/translation/bin/cli.php \
        --region=[AWS_REGION] \
        --translation=[TRANSLATION_TABLE] \
        --translation_queue=[TRANSLATION_QUEUE_TABLE] \
        --translation_project=[TRANSLATION_PROJECT_TABLE] \
   	    push

支持的语言

大多数语言代码参数符合 ISO-639-1 标识符,除非另有说明。