zeliard91/google-translator-bundle

用于与Google Translate API一起工作的Symfony服务

v3.0.0 2021-04-14 17:36 UTC

This package is auto-updated.

Last update: 2024-09-15 16:00:32 UTC


README

SensioLabsInsight Build Status

此捆绑包提供了一个symfony服务,用于与Google Translate API交互。https://developers.google.com/translate/v2/getting_started

要能够翻译句子,您必须在Google Cloud Console中启用计费https://developers.google.com/translate/v2/pricing

安装

安装是一个快速的三步过程

  1. 使用composer下载PryonGoogleTranslatorBundle
  2. 启用捆绑包
  3. 配置您的应用config.yml

步骤1:使用composer下载PryonGoogleTranslatorBundle

php composer.phar require zeliard91/google-translator-bundle

步骤2:启用捆绑包

在内核中启用捆绑包

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Pryon\GoogleTranslatorBundle\PryonGoogleTranslatorBundle(),
    );
}

步骤3:在配置中添加您的Google API密钥

# app/config/config.yml

pryon_google_translator:
    google_api_key: MySecretKey

使用方法

该捆绑包提供了一个服务,使您的应用能够通过REST调用Google Translate API。

示例

获取支持的语言

<?php

$languages = $this->get('pryon.google.translator')->getSupportedLanguages();
//->['en','fr','de','it',...]

翻译句子

<?php

$translation = $this->get('pryon.google.translator')->translate('en','fr','I love Symfony');
//->"J'adore Symfony"

$translations = $this->get('pryon.google.translator')->translate('en','fr', array('I love Symfony', 'I like PHP'));
//->["J'adore Symfony", "J'aime PHP"]

请注意,Google限制了此服务的使用,通过限制POST方法(和GET方法中的2K)的查询大小为5K字符。如果将数组传递给translate方法的第三个参数,查询数量也限制为128。

translate方法会检测是否达到这些限制,并根据需要调用API,这可能会导致处理时间较长。

表单类型

此捆绑包中还有一个名为"translatorlanguage"的表单类型。它与核心"language"表单类型基本相同,只是选项列表由API填充。

<?php

use Pryon\GoogleTranslatorBundle\Form\Type\LanguageType;
use Symfony\Component\Form\FormBuilderInterface;

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        // ...
        ->add('source', LanguageType::class, array(
            'required' => true,
            'label' => 'Source language'
        ))
    ;
}

缓存

您可以使用Doctrine\Common\Cache\CacheProvider的一个子类缓存API的响应。

这可以通过在配置文件中指定要缓存的内容以及如何缓存来实现。这是默认配置

# app/config/config.yml

pryon_google_translator:
    cache: 
        # Specify your doctrine cache service
        service: pryon.google.translator.array_cache_provider
        calls:
            # get available languages method
            languages: true
            # translate method
            translate: false

HTTP客户端选项

您可以定义REST客户端针对Google API的默认HTTP头

# app/config/config.yml

pryon_google_translator:
    # ...
    client_options:
        headers:
            Referer: %router.request_context.scheme%://%router.request_context.host%%router.request_context.base_url%
            User-Agent: Mr Robot

有关更多信息,请参阅Guzzle文档