zeliard91 / google-translator-bundle
用于与Google Translate API一起工作的Symfony服务
v3.0.0
2021-04-14 17:36 UTC
Requires
- php: >=7.2.5
- doctrine/cache: ^1.0
- guzzlehttp/guzzle: ^6.2
- symfony/config: ^4.4|^5.2
- symfony/form: ^4.4|^5.2
Requires (Dev)
- symfony/framework-bundle: ^4.4|^5.2
- symfony/phpunit-bridge: ^5.2
README
此捆绑包提供了一个symfony服务,用于与Google Translate API交互。https://developers.google.com/translate/v2/getting_started
要能够翻译句子,您必须在Google Cloud Console中启用计费https://developers.google.com/translate/v2/pricing
安装
安装是一个快速的三步过程
- 使用composer下载PryonGoogleTranslatorBundle
- 启用捆绑包
- 配置您的应用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文档。