bbs-lab / nova-translation
Requires
- php: ^7.2|^8.0
- ext-json: *
- illuminate/contracts: ^6.2|^7.0|^8.0|^9.0|^10.18|^11.0
- illuminate/database: ^6.2|^7.0|^8.0|^9.0|^10.18|^11.0
- illuminate/support: ^6.2|^7.0|^8.0|^9.0|^10.18|^11.0
- laravel/framework: ^6.2|^7.0|^8.0|^9.0|^10.18|^11.0
- laravel/nova: ^4.0
- nova-kit/nova-packages-tool: ^1.3.1
Requires (Dev)
- nuwave/lighthouse: ^4|^5.0
- dev-master
- 5.x-dev
- v5.1.0
- v5.0.0
- 4.x-dev
- v4.3.0
- v4.2.0
- v4.1.1
- v4.1.0
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- 3.x-dev
- v3.0.0
- v1.4.4
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.0
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.5.4
- v0.5.3
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.1
- v0.4.0
- v0.3.5
- v0.3.4
- v0.3.2
- v0.3.1
- v0.3.0
- 0.2.0
- 0.1.0
- v0.0.1
- dev-release/0.5.x
- dev-feature/laravel-11-support
- dev-dependabot/npm_and_yarn/webpack-5.76.1
- dev-nova-4
- dev-release/1.4.x
- dev-legacy/translatable
This package is auto-updated.
Last update: 2024-09-12 09:23:49 UTC
README
内容
安装
您可以通过 composer 将 nova 工具安装到使用 Nova 的 Laravel 应用中
composer require bbs-lab/nova-translation
服务提供程序将自动注册。或者,您也可以手动在您的 config/app.php
文件中添加服务提供程序
'providers' => [ // ... BBSLab\NovaTranslation\NovaTranslationServiceProvider::class, ],
您可以通过以下命令自定义应用程序的默认设置
php artisan vendor:publish --provider="BBSLab\NovaTranslation\NovaTranslationServiceProvider"
您需要运行迁移和种子 Locales。
php artisan migrate
模型设置
// @TODO... 解释
-
use Traits\Translatable
-
auto_synced_models
在 config.php 中 -
定义
$nonTranslatable
属性(在条目更新期间将被覆盖的所有翻译中的属性)。 -
定义
$onCreateTranslatable
属性(在翻译条目创建期间将复制的属性)。 -
如果您使用
michielkempen/nova-order-field
包,您必须通过以下方式覆盖模型中的系统
/** * {@inheritdoc} */ public function buildSortQuery() { return static::query()->locale(); }
配置
您可以通过运行以下命令发布默认配置
php artisan vendor:publish --provider="BBSLab\NovaTranslation\NovaTranslationServiceProvider"
使用 Cookies
默认情况下,语言设置在更改时存储在会话中,但如果您需要在会话启动之前访问它,您可以通过在配置中启用它来指示包将其保存到 Cookie 中
'use_cookies' => true,
Cookie 将持有在 locale_session_key
中定义的相同名称
💡 注意:Cookie 将默认加密,要将其排除,您可以将其添加到您的 EncryptCookies
中间件
class EncryptCookies extends Middleware { public function __construct(EncrypterContract $encrypter) { parent::__construct($encrypter); $this->except = array_merge($this->except, [ // ... NovaTranslation::localeSessionKey(), ]); } }
配置 Nova
在应用程序内核中添加 SetLocale
中间件。
// app/Http/Kernel.php protected $middleware = [ // ... \BBSLab\NovaTranslation\Http\Middleware\SetLocale::class, ];
用法
TranslationMatrix 工具
您必须使用 Nova 注册翻译矩阵后端工具
// app/Providers/NovaServiceProvider.php public function tools() { return [ new \BBSLab\NovaTranslation\Tools\TranslationMatrix, ]; }
Nova 资源
Nova 资源必须 继承 BBSLab\NovaTranslation\Resources\TranslatableResource
才能正常工作。
区域资源
您可以在您的应用程序中添加 Locale Nova 资源
// app/Nova/Locale.php <?php namespace App\Nova; use App\Helpers\StaticLabel; use BBSLab\NovaTranslation\Resources\Locale as BaseResource; class Locale extends BaseResource { /** * {@inheritdoc} */ public static $group = StaticLabel::GROUP_ADMINISTRATION; }
GraphQL
如果您使用 Lighthouse PHP,您可以添加一些默认指令和端点,用于 Locale
和 Label
。
指令 @allTranslations
、@paginateTranslations
、@firstTranslation
相关
作为类似 @all
、@paginate
、@first
的操作。
您需要将包指令路径添加到您的 lighthouse.php 配置文件中
// config/lighthouse.php 'namespaces' => [ // ... 'directives' => ['App\\GraphQL\\Directives', 'BBSLab\\NovaTranslation\\GraphQL\\Directives'], ],
模式
您可以将这些包含到现有的模式中
#import ../../../vendor/bbs-lab/nova-translation/src/Http/GraphQL/Locale/*.graphql #import ../../../vendor/bbs-lab/nova-translation/src/Http/GraphQL/Label/*.graphql
旗帜资源
UTF-8(例如 en.json
)旗帜来自 EmojiTerra
TODO
- 在键标题上添加排序按钮
- 添加搜索栏以过滤键
- 添加复选框以启用/禁用显示区域
- 当未选择区域时,添加自定义消息/组件