ngiraud/nova-translatable-v2

Laravel Nova 的一个可翻译扩展。灵感来自 optimistdigital/nova-translatable

2.0.0 2023-03-20 10:33 UTC

This package is auto-updated.

Last update: 2024-09-20 13:49:40 UTC


README

Laravel Nova 允许您使用 spatie/laravel-translatable 包使任何输入字段兼容并本地化。

此包受到 optimistdigital/nova-translatable 的启发。

要求

  • laravel/nova: ^3.0
  • spatie/laravel-translatable: ^4.0

您首先需要设置 spatie/laravel-translatable 包。

安装

该包可以通过 composer 安装

composer require ngiraud/nova-translatable-v2

该包将自动注册服务提供者。

您可以发布配置文件以使用自定义区域设置。

php artisan vendor:publish --tag="nova-translatable-config"

这是已发布配置文件的内容

return [

    /**
     * the locales which the `translatable` wrapper will use by default.
     *
     * can be a:
     *  - keyed array (['en' => 'english])
     *  - callable that returns a keyed array
     */

    'locales' => ['en' => 'English'],

];

用法

只需在 Nova 字段上调用 ->translatable()

Text::make('Name')
  ->rules('required', 'min:2')
  ->translatable()

可选地,您可以传递自定义区域设置

Number::make('Population')
  ->translatable([
    'en' => 'English',
    'et' => 'Estonian',
  ])

验证

您可以添加针对单个区域的验证规则。

为此,在您的字段上添加 ->rulesFor() 和在 Nova 资源上添加 HasTranslatable 特性

class Product extends Resource
{
    use \NGiraud\NovaTranslatable\HasTranslatable;
    
    public function fields(Request $request)
    {
        return [
            ID::make()->sortable(),

            Text::make(__('Name'), 'name')
                ->sortable()
                ->translatable()
                ->rules(['max:255'])
                ->rulesFor('fr', [
                    'required',
                    'unique:products,sku->fr,{{resourceId}}'
                ])
    }
}

在此示例中,将应用 max 规则于 name.*,并将 required 规则应用于 name.fr

待办事项

  • 向包中添加测试

变更日志

请参阅 CHANGELOG 了解有关最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全

如果您发现任何安全问题,请通过电子邮件 contact@ngiraud.me 而不是使用问题跟踪器。

鸣谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。