whitecube/nova-translatable

此软件包已被废弃,不再维护。作者建议使用 https://framagit.org/yeswedev/ywd_nova-translatable 软件包。

Laravel Nova 字段,用于 dimsav/laravel-translatable。

dev-master 2018-10-25 15:24 UTC

This package is auto-updated.

Last update: 2019-02-26 15:18:40 UTC


README

Latest Version on Packagist

此软件包是 yeswedev/ywd_nova-translatable 的分支,而后者基于 mrmonat/nova-translatable

增加了使用 dimsav/laravel-translatable 软件包创建的可翻译字段的显示和编辑功能。

在详情视图中将显示如下

68747470733a2f2f6d726d6f6e61742e64652f6769746875622f696d616765732f6e6f76612d7370617469652d7472616e736c617461626c652d64657461696c732e706e67

在编辑视图中将显示如下

68747470733a2f2f6d726d6f6e61742e64652f6769746875622f696d616765732f6e6f76612d7370617469652d7472616e736c617461626c652d656469742e706e67

安装和用法

您可以使用 composer 需求此软件包

composer require whitecube/nova-translatable

您可以添加以下字段

use Whitecube\Nova\Translatable\Translatable;

Translatable::make('Description'),

确保您已经正确设置了 Eloquent 模型

  • 首先,您需要添加 Dimsav\Translatable\Translatable-trait。
  • 接下来,您应该创建一个公共属性 $translatedAttributes,该属性包含您希望使其可翻译的所有属性的名称数组。
  • 最后,您应该确保所有可翻译属性在数据库中都被设置为 text-数据类型。如果您的数据库支持 json 列,请使用它。

以下是一个准备好的模型的示例

use Illuminate\Database\Eloquent\Model;
use Dimsav\Translatable\Translatable;

class NewsItem extends Model
{
    use Translatable;
    
    public $translatedAttributes = ['name'];
}

定义区域

可以通过配置文件 config/translatable.php 中的 locales 数组来定义区域

// config/translatable.php
return [
    ...
    'locales' => [
        'en',
        'de',
        'fr',
    ],
];

或者您可以使用 locales(...) 方法“覆盖”配置区域

Translatable::make('Description')->locales([
    'en' => 'English',
    'de' => 'German',
]),

单行选项

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

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

Markdown 编辑器

您可以通过使用 md() 选项来为您的翻译字段使用 SimpleMDE Markdown 编辑器

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

Trix 编辑器

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

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

索引视图

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

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