mrmonat / nova-translatable
该软件包已被废弃,不再维护。作者建议使用 spatie/nova-translatable 软件包代替。
Laravel Nova 字段,用于 spatie/laravel-translatable。
2.2.0
2021-08-29 13:41 UTC
Requires
- php: ^7.1.0|^8.0
- spatie/laravel-translatable: ^4.0|^5.0
README
该软件包将不再维护。请使用 https://github.com/spatie/nova-translatable 作为替代。如果您不喜欢 spatie 软件包的不同方法,您可以随意fork此仓库并发布新的版本。
Nova 可翻译字段
增加了显示和编辑使用 spatie/laravel-translatable 软件包创建的可翻译字段的 capability。
在详细视图中的显示方式如下
和在编辑视图中的显示方式如下
支持更多字段类型的替代方案
如果您需要支持更多可翻译的字段类型,请查看 spatie 的官方软件包:https://github.com/spatie/nova-translatable
安装和使用
您可以使用 composer 需求此软件包
composer require mrmonat/nova-translatable
您可以添加以下字段
use MrMonat\Translatable\Translatable;
Translatable::make('Description'),
确保您的 Eloquent 模型设置正确
- 首先,您需要添加
Spatie\Translatable\HasTranslations-trait。 - 接下来,您应该创建一个公共属性
$translatable,它包含您希望使其可翻译的所有属性的名称数组。 - 最后,您应该确保在数据库中将所有可翻译属性设置为
text-数据类型。如果您的数据库支持json-列,请使用该列。
以下是一个准备好的模型示例
use Illuminate\Database\Eloquent\Model; use Spatie\Translatable\HasTranslations; class NewsItem extends Model { use HasTranslations; public $translatable = ['name']; }
定义区域设置
可以通过配置文件 config/translatable.php(配置文件可以通过 spatie/laravel-translatable 软件包创建)定义区域设置,通过添加一个 locales 数组
// config/translatable.php
return [
...
'locales' => [
'en' => 'English',
'de' => 'German',
'fr' => 'French',
],
];
或者,您可以使用 locales(...) 方法“覆盖”配置区域设置
Translatable::make('Description')->locales([
'en' => 'English',
'de' => 'German',
]),
单行选项
默认情况下,编辑视图上的输入字段是文本区域。如果您想将其更改为单行输入字段,可以添加 singleLine() 选项
Translatable::make('Description')->locales([...])->singleLine(),
Trix 编辑器
您可以使用 trix() 选项为您的可翻译字段使用 trix 编辑器
Translatable::make('Description')->trix(),
索引视图
默认情况下,在索引视图中显示字段时使用的区域设置由 app()->getLocale() 确定。要覆盖此设置,您可以使用 indexLocale($locale) 选项
Translatable::make('Description')->indexLocale('de'),