workup/nova-translatable

为 spatie/laravel-translatable 提供的 Laravel Nova 字段。

安装: 613

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 26

语言:Vue

2.2.0.001 2021-10-11 14:12 UTC

This package is auto-updated.

Last update: 2024-09-15 21:46:19 UTC


README

Latest Version on Packagist

添加了显示和编辑使用 spatie/laravel-translatable 包创建的翻译字段的特性。

它在详情视图中的显示如下

和在编辑视图中的显示如下

支持更多字段类型的替代方案

如果您需要支持更多可翻译的字段类型,请查看 spatie 的官方包:https://github.com/spatie/nova-translatable

安装和使用

您可以使用 composer 需求此包

composer require workup/nova-translatable

您可以将以下字段添加到您的配置中

use Workup\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',
]),

单行选项

默认情况下,编辑视图中的输入字段是 textarea。如果您想将其更改为单行输入字段,可以添加 singleLine() 选项

Translatable::make('Description')->locales([...])->singleLine(),

Trix 编辑器

您可以使用 trix() 选项为翻译字段使用 trix 编辑器

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

索引视图

默认情况下,在索引视图中显示字段时使用的区域是由 app()->getLocale() 确定的。要覆盖此设置,您可以使用 indexLocale($locale) 选项

Translatable::make('Description')->indexLocale('de'),