digitalcloud / multilingual-nova
💪 多语言 Nova (使用默认 nova 字段)
Requires
- php: ^8.0
- spatie/laravel-package-tools: ^1.9
- spatie/laravel-translatable: ^4.0
Requires (Dev)
- laravel/framework: ^8.0
- laravel/nova: ~3.0
- orchestra/testbench: ^6.23
- pestphp/pest-plugin-faker: ^1.0
- pestphp/pest-plugin-laravel: ^1.1
- pestphp/pest-plugin-parallel: ^1.0
- phpunit/phpunit: ^9.5.10
- dev-master
- v3.0.0
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0
- v1.8
- v1.7.1
- v1.7
- v1.6
- v1.5
- v1.4
- v1.3
- v1.2
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- 0.1.0
- 0.0.2
- 0.0.1
- dev-dependabot/composer/guzzlehttp/psr7-2.5.0
- dev-dependabot/npm_and_yarn/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/loader-utils-1.4.2
- dev-dependabot/npm_and_yarn/minimatch-3.1.2
- dev-dependabot/npm_and_yarn/json5-1.0.2
- dev-dependabot/composer/phpseclib/phpseclib-3.0.19
- dev-dependabot/npm_and_yarn/minimist-1.2.8
- dev-dependabot/composer/symfony/http-kernel-5.4.20
- dev-add-workflows
- dev-deletion
This package is auto-updated.
Last update: 2024-09-19 21:57:37 UTC
README
此包允许您切换 Nova 语言。语言可以从配置文件或数据库中检索为数组。
要求
安装
您可以通过 composer 安装此包
composer require digitalcloud/multilingual-nova
您可以发布配置文件
php artisan vendor:publish --provider="Digitalcloud\MultilingualNova\FieldServiceProvider"
这是将发布到 config/multilingual.php
的文件内容
<?php return [ /* * The source of supported locales on the application. * Available selection "array", "database". Default array. * When you set source "array" you can declare your languages from below at locales. * And when you set source "database" you can declare languages model from below and follow database instructions. */ 'source' => 'array', /* * If you choose array selection, you should add all supported translation on it as "code" => "label" */ 'locales' => [ 'en' => 'English', 'ar' => 'Arabic', 'de' => 'Deutsch' ], /* * If you choose database selection, you should create or choose the model responsible for retrieving supported translations. * If there is not existed model for retrieving supported translations, you must create a new model and must contain two columns from values "code_field", "label_field". * And choose the 'code_field' for example "en","ar","ru"... * And choose the 'label_field' which will be shown for users, for example "English","EN", .... */ 'database' => [ 'model' => 'App\\Language', 'code_field' => 'code', 'label_field' => 'label' ], /* * The view style you want to show on index & details page. * Available selection "button", "list", "mix" default button. */ 'style' => 'button', /* * If you choose mix selection, you can define after how many languages should the button convert to list. */ 'convert_to_list_after' => 3 ];
用法
Nova 语言工具
您可以通过将注册到 Nova 来将其用作工具。这通常在 app/Providers/NovaServiceProvider.php
中的 NovaServiceProvider 的 tools 方法中完成。
use Digitalcloud\MultilingualNova\NovaLanguageTool; // .... public function tools() { return [ // ... new NovaLanguageTool(), // ... ]; }
Nova 语言字段
您可以为您的资源添加 Multilingual
字段,该字段将显示语言。
use Digitalcloud\MultilingualNova\Multilingual; // .... public function fields(Request $request) { return [ // ... Multilingual::make('Language'), // ... ]; }
注意:该字段是一个虚拟字段,不需要它是数据库列。您可以将它视为语言切换器输入。
在索引和详情页面上,该字段将允许您使用所选语言转到编辑表单。在创建和更新页面上,该字段允许您以简单直接的方式更改表单中输入的语言。
模型
我们使用 Spatie laravel translatable
use Spatie\Translatable\HasTranslations; // .... class User extends Model { use HasTranslations; protected $fillable = ['name']; protected $translatable = ['name']; }
定义区域
您可以在配置文件中设置区域的来源。可能的选项是数组或数据库。如果您的语言来源是数组,您需要在配置文件中的区域数组中添加允许的语言。如果您的语言来源是数据库,您需要配置语言表的 eloquent 模型,语言代码的列和语言标签的列。
或者,您可以使用 setLocales(...)
函数覆盖配置区域
use Digitalcloud\MultilingualNova\Multilingual; // .... public function fields(Request $request) { return [ // ... Multilingual::make('Language')->setLocales([ 'ar' => 'Arabic', 'en' => 'English', 'de' => 'Deutsch', ]), // ... ]; }
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
安全漏洞
显示选项
此工具允许您在语言选择器字段之间切换显示样式。可能的显示选项是按钮、列表或混合。默认显示样式为 button
。如果字段有特定语言的翻译,则按钮为蓝色 - 主要按钮,如果没有可用的翻译,则按钮为灰色 - 默认按钮。
如果您的应用程序支持多种语言,则此 button
显示样式不适合,因此 list
显示将更合适。使用 list
显示,区域将分组在下拉列表中,允许您从该列表中选择选项。
显示语言的另一种完美选项是 mix
。它允许您在 button
和 list
显示选项之间混合。例如,如果系统支持少于三个区域,则它们将显示为 button
,否则将选择 list
。这种情况可以通过在配置文件中将 convert_to_list_after
设置为 3 或您想要的任何值来实现。
特性
- 在索引视图中显示支持的区域。
- 允许您在任何支持的区域中编辑任何资源。
- 没有额外的字段,只需使用默认的 Laravel 表单字段。
- 在索引、详情、创建和更新页面之间快速切换语言。
- 支持关系字段和子表。
- 自动用默认/回退语言内容填充表单字段。
- 显示每个地区翻译/未翻译的状态。
- 使用配置文件列出支持的地区。
路线图
- 显示每个地区翻译/未翻译的状态。
- 使用配置文件列出支持的地区。
- 使用数据库资源管理支持的地区。
- 自动检测可翻译的模型。
- 更好地支持不可翻译的字段。