在开发多语言网站时,我们通常会使用 Spatie 的 laravel-translatable 包来管理翻译内容。然而,将这个包与 Filament 整合,以便在后台管理界面方便地编辑多语言内容,可能会遇到一些挑战。手动实现这些功能需要编写大量的代码,并且容易出错。幸运的是,filament/spatie-laravel-translatable-plugin 插件的出现,极大地简化了这一过程。
该插件为 filament 提供无缝的 spatie/laravel-translatable 集成,无需编写大量自定义代码即可轻松管理多语言内容。它提供了一个简单的配置界面,可以轻松设置默认的翻译语言,并在资源和页面中添加语言切换器。
Composer在线学习地址:学习地址
安装插件
首先,通过 Composer 安装该插件:
composer require filament/spatie-laravel-translatable-plugin:"^3.2" -W
配置插件
将插件添加到 Filament 面板的配置中:
use Filament\SpatieLaravelTranslatablePlugin; use Filament\Panel; public function panel(Panel $panel): Panel { return $panel // ... ->plugin(SpatieLaravelTranslatablePlugin::make()); }
设置默认语言
通过 defaultLocales() 方法设置默认的翻译语言:
use Filament\SpatieLaravelTranslatablePlugin; use Filament\Panel; public function panel(Panel $panel): Panel { return $panel // ... ->plugin( SpatieLaravelTranslatablePlugin::make() ->defaultLocales(['en', 'es']), ); }
准备 Model
确保你的 Model 类已经使用了 spatie/laravel-translatable,并设置了 translatable 属性。
准备 Resource
在你的 Resource 类中使用 Filament\Resources\Concerns\Translatable trait:
use Filament\Resources\Concerns\Translatable; use Filament\Resources\Resource; class BlogPostResource extends Resource { use Translatable; // ... }
使 Resource Pages 可翻译
在 Resource 的 Pages 中,使用对应的 Translatable trait,并添加 LocaleSwitcher header action:
use Filament\Actions; use Filament\Resources\Pages\ListRecords; class ListBlogPosts extends ListRecords { use ListRecords\Concerns\Translatable; protected function getHeaderActions(): array { return [ Actions\LocaleSwitcher::make(), // ... ]; } // ... }
对于 CreateRecord、EditRecord 和 ViewRecord 页面,也需要做类似的处理。
翻译 Relation Managers
如果你的 Resource 中使用了 Relation Managers,也需要进行翻译配置。首先,在 Relation Manager 类中使用 Filament\Resources\RelationManagers\Concerns\Translatable trait:
use Filament\Resources\RelationManagers\Concerns\Translatable; use Filament\Resources\RelationManagers\RelationManager; class BlogPostsRelationManager extends RelationManager { use Translatable; // ... }
然后在 table() 方法的 headerActions 中添加 Tables\Actions\LocaleSwitcher::make()。
插件优势
实际应用效果
通过使用 filament/spatie-laravel-translatable-plugin 插件,我们可以快速构建具有多语言管理功能的 Filament 后台,方便编辑和管理不同语言的内容,提升网站的国际化水平。告别手动编写多语言管理功能的繁琐,将更多精力投入到业务逻辑的开发中。
以上就是Filament如何解决SpatieTranslatable的集成难题,提升多语言网站管理效率的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号