xxc/nova-translatable

一个用于 spatie/laravel-translatable 的 Laravel Nova 字段。

1.0 2018-10-21 14:34 UTC

This package is auto-updated.

Last update: 2024-09-23 10:35:59 UTC


README

Latest Version on Packagist

为使用 spatie/laravel-translatable 包创建的翻译字段添加显示和编辑功能。

它会在详情视图显示如下

并在编辑视图显示如下

安装和使用

您可以使用 composer 需求此包

composer require xxc/nova-translatable

您可以添加以下字段

use xXc\Translatable\Translatable;

Translatable::make('Description'),

确保,您的 Eloquent 模型设置正确

  • 首先,您需要添加 Spatie\Translatable\HasTranslations-特质。
  • 接下来,您应该创建一个公开属性 $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'),

同时切换标签

默认情况下,当您点击其中一个标签时,所有显示的字段的标签都会切换

只读选项

为字段添加了只读选项

Translatable::make('Description')->readOnly(),

字段连接选项

使用 fieldHookup() 方法将触发一个字段的输入值转移到另一个字段。这在生成 sef 网址的别名时非常有帮助。此外,还可以与 resolveUsing() 结合使用,以修改字段的输入值

鸣谢

spatie/laravel-translatable

mrmonat/nova-translatable