jbernavaprah / lighthouse-translation
Laravel Lighthouse 的翻译支持
v1.0.1
2022-06-18 14:29 UTC
Requires
- php: ^8.1
- laravel/framework: ^9.0
- nuwave/lighthouse: ^5.5
- spatie/data-transfer-object: ^3.7
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- mockery/mockery: ^1.5
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^7.0
- orchestra/testbench-core: ^7.0
- phpoption/phpoption: ^1.8
- phpstan/phpstan-mockery: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- thecodingmachine/safe: ^2.0
README
不是生产就绪。
要求
安装
1. 使用 composer 安装
composer require jBernavaPrah/lighthouse-translation
2. 使用Translation
将 JBernavaPrah\Translation\UseTranslation
特性应用到您的模型上。
use JBernavaPrah\UseTranslation ; use Illuminate\Database\Eloquent\Model; /** * @property \JBernavaPrah\LighthouseTranslation\Translate $name * */ class Item extends Model { use UseTranslation; public function translationColumns(): array{ return ["name"] } }
3. 在 GraphQL 架构中将字段类型声明为 Translate
type Item { name: Translate! # ... }
使用
启用翻译
指令 localize
接受一个参数,即用于返回本地化数据的语言。
如果该列上没有找到,则返回 null。
query { item(id: 1) @localize(lang: "en") { name { ...on Localized{ lang text } } } }
如果在该查询/突变上未使用该指令,则返回原始翻译类型。
query { item(id: 1) { name { ... on RawTranslation { data { lang text } } } } }
致谢
许多想法得益于 daniel-de-wit/lighthouse-sanctum。非常感谢他和他的精美代码!
此外,nuwave/lighthouse 的作者在文档和代码方面也做出了巨大的贡献。