mihkullorg / laravel-translatable
使用Google Cloud Translate的多语言模型Laravel包
Requires
- php: >=7.1.3
- google/cloud-translate: ^1.2
- illuminate/support: 5.6.*|5.7.*|5.8.*
Requires (Dev)
- matthewbdaly/artisan-standalone: 0.0.*
- orchestra/testbench: ^3.7
- phpunit/phpunit: ^7.0
README
这是一个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以改进此包。我希望你会这么做。 :)