mihkullorg/laravel-translatable

使用Google Cloud Translate的多语言模型Laravel包

1.2.3 2019-06-29 23:29 UTC

This package is auto-updated.

Last update: 2024-08-29 05:00:21 UTC


README

Latest Stable Version Total Downloads Build status StyleCI License

这是一个Laravel包,用于(自动)可翻译的模型。它提供了多语言模型的功能,并可选择使用外部服务进行自动翻译。《Google Cloud Translate》(GCT)已集成到包中,添加其他服务也相当简单。

如果您不感兴趣使用任何自动翻译服务,只想使模型支持多语言,建议使用dismav/laravel-translatable包,因为它拥有更多历史和社区支持,社区规模更大。

索引

信息

此包是为Laravel 5.6和5.7创建的。

快速开始

步骤1:安装包

通过执行以下命令将包添加到您的composer.json中。

composer require mihkullorg/laravel-translatable

接下来,将服务提供者添加到config/app.php

Mihkullorg\Translatable\TranslatableServiceProvider::class

步骤2:设置环境和迁移。

发布迁移文件。

php artisan vendor:publish --tag=translatable

设置您的Google Cloud Translate/GCT服务账户,并从Google Cloud认证文档中选择您偏好的认证方式。由于Google支持通过环境变量进行认证,且这种方式非常方便,因此此包也使用了它。我倾向于通过将GOOGLE_APPLICATION_CREDENTIALS变量设置为服务账户私钥文件路径来进行认证。

步骤3:将Translatable特性添加到模型中

use Mihkullorg\Translatable\Traits\Translatable;

class Post extends Model 
{
    use Translatable;
    
    public $fillable = ['body'];
}

特性添加必要的翻译关系方法

$post->translations();
$post->translation($field, $language, $createIfNotFresh = false);

Translation模型的updated_at时间比Translatable模型的update_at时间旧时,翻译是“新鲜的”。

$post->freshTranslation($field, $language);

要手动创建翻译,可以调用translate($field, $language, $value = null)方法

$post->translate('body', 'en', 'New translated body');

要使用GCT服务,不要指定值,翻译将自动检索并创建模型。

$translation = $post->translate('body', 'en');

translation方法的作用类似,如果$createIfNotFresh设置为true,它将尝试从数据库中检索新鲜的翻译,如果不存在,则使用GCT服务。

常见问题解答

  • 关于Laravel <5.6怎么办?

我真心不确定它是否与5.6之前的版本兼容,但截至创建此包,仅正式支持5.6和5.7。如果有人愿意在早期版本上测试并确保其工作,请创建问题,让我们讨论。

贡献

请随意创建问题并提交PR以改进此包。我希望你会这么做。 :)