maggomann / filament-model-translator
此包使用当前指定的翻译文件将Eloquent模型进行翻译。Eloquent模型在[filament的](https://filamentphp.com/) Resources和RelationManagers内部用于翻译。此包为Resources和RelationManagers提供了用于翻译的特性
Requires
- php: ^8.1
- spatie/once: ^3.1
Requires (Dev)
- filament/filament: ^3.2
- filament/support: *
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- orchestra/testbench: ^8.20|^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- phpunit/phpunit: ^10.0
- spatie/laravel-package-tools: ^1.9
README
filament v3.x 版本的 Filament 模型翻译包
此包专为 Filament Admin Panel v3.x 量身定制。
在继续安装之前,请确保您已经安装了管理面板。您可以在此处查看文档
该包使用当前指定的翻译文件将Eloquent模型进行翻译。Eloquent模型在filament的 Resources和RelationManagers内部用于翻译。此包为Resources和RelationManagers提供了用于自动翻译它们的特性。
支持的版本
安装
您可以通过composer安装此包
composer require maggomann/filament-model-translator
将插件添加到您想要的Filament面板
use Maggomann\FilamentModelTranslator\FilamentModelTranslatorServicePlugin; class AdminPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel ... ->plugins([ FilamentModelTranslatorServicePlugin::make() ]); } }
如何使用它?
语言文件
当前翻译是从filament-model.php
翻译文件中调用的,该文件必须位于以下目录结构中
lang de filament-model.php en filament-model.php
包内的filament-model.php
文件作为翻译的结构化语言文件。它允许为各种实体(如模型、它们的属性和导航元素)定义翻译。
<?php return [ /* |-------------------------------------------------------------------------- | Models |-------------------------------------------------------------------------- */ 'models' => [ 'calculation_type' => 'Calculation type|Calculation types', 'federation' => 'Association|Associations', 'league' => 'League|Leagues', ], /* |-------------------------------------------------------------------------- | Attribute |-------------------------------------------------------------------------- */ 'attributes' => [ 'federation' => [ 'name' => 'Name', 'slug' => 'Slug', 'calculation_type_id' => 'Calculation type', 'created_at' => 'Created at', 'updated_at' => 'Updated at', 'deleted_at' => 'Deleted at', ], 'league' => [ 'name' => 'Name', 'slug' => 'Slug', 'created_at' => 'Created at', 'updated_at' => 'Updated at', 'deleted_at' => 'Deleted at', ], 'calculation_type' => [ 'name' => 'Name', 'description' => 'Description', 'created_at' => 'Created at', 'updated_at' => 'Updated at', 'deleted_at' => 'Deleted at', ], ], /* |-------------------------------------------------------------------------- | Navigation |-------------------------------------------------------------------------- */ 'navigation_group' => [ 'federation' => [ 'name' => 'Seasons & Tournaments', ], 'league' => [ 'name' => 'Seasons & Tournaments', ], 'calculation_type' => [ 'name' => 'Seasons & Tournaments', ], ], ];
此文件为组织应用程序各个方面语言翻译提供了一种结构化的方式
- 模型:在这里,您可以定义单数和复数形式下模型名称的翻译。
- 属性:包含每个模型的属性翻译。例如,您可以设置名称、slug、created_at等属性的翻译。
- 导航:定义与模型关联的导航组的翻译。在这种情况下,每个模型的导航组设置为'季节 & 赛事'。
为资源类提供的 HasTranslateableResources 特性
HasTranslateableResources
特性内部自动翻译方法调用
public static function getModelLabel(): string; public static function getPluralModelLabel(): string; protected static function getNavigationGroup(): ?string;
示例
<?php namespace Maggomann\YourPackageFolder\Resources; use Filament\Resources\Resource; use Maggomann\FilamentModelTranslator\Contracts\TranslateableResources; use Maggomann\FilamentModelTranslator\Traits\HasTranslateableResources; class TranslateableResource extends Resource implements TranslateableResources { use HasTranslateableResources; protected static ?string $translateableKey = 'your-package-name::'; public function transPackageKey(): ?string { return static::$translateableKey; } } class LeagueResource extends TranslateableResource { protected static ?string $model = League::class; class FederationResource extends TranslateableResource { protected static ?string $model = Federation::class;
或
<?php namespace Maggomann\YourPackageFolder\Resources; use Filament\Resources\Resource; use Maggomann\FilamentModelTranslator\Contracts\TranslateableResources; use Maggomann\FilamentModelTranslator\Traits\HasTranslateableResources; class LeagueResource extends Resource implements TranslateableResources { use HasTranslateableResources; protected static ?string $translateableKey = 'your-package-name::'; public function transPackageKey(): ?string { return static::$translateableKey; } protected static ?string $model = League::class;
<?php namespace Maggomann\YourPackageFolder\Resources; use Filament\Resources\Resource; use Maggomann\FilamentModelTranslator\Contracts\TranslateableResources; use Maggomann\FilamentModelTranslator\Traits\HasTranslateableResources; class FederationResource extends Resource implements TranslateableResources { use HasTranslateableResources; protected static ?string $translateableKey = 'your-package-name::'; public function transPackageKey(): ?string { return static::$translateableKey; } protected static ?string $model = Federation::class;
为关系类提供的 HasTranslateableRelationManager 特性
HasTranslateableRelationManager
特性内部自动翻译方法调用
public static function getModelLabel(): string; public static function getPluralModelLabel(): string;
您可以使用以下方式使用HasTranslateableRelationManager
特性
示例
<?php namespace Maggomann\YourPackageFolder\Resources; use Filament\Resources\RelationManagers\RelationManager; use Maggomann\FilamentModelTranslator\Contracts\Translateable; use Maggomann\FilamentModelTranslator\Traits\HasTranslateableRelationManager; class TranslateableRelationManager extends RelationManager implements Translateable { use HasTranslateableRelationManager; protected static ?string $translateablePackageKey = 'your-package-name::'; }
<?php namespace Maggomann\YourPackageFolder\Resources\FederationResource\RelationManagers; use Maggomann\YourPackageFolder\Resources\TranslateableRelationManager; class LeaguesRelationManager extends TranslateableRelationManager {
或
<?php namespace Maggomann\YourPackageFolder\Resources\FederationResource\RelationManagers; use Filament\Resources\RelationManagers\RelationManager; use Maggomann\FilamentModelTranslator\Contracts\Translateable; use Maggomann\FilamentModelTranslator\Traits\HasTranslateableRelationManager; class LeaguesRelationManager extends RelationManager implements Translateable { use HasTranslateableRelationManager; protected static ?string $translateablePackageKey = 'your-package-name::';
为 Eloquent 类提供的 HasTranslateableModel 特性
使用HasTranslateableModel
特性,以下方法调用可用
<?php EloquentModel::transAttribute('your_attributes_key'); // Example TextInput::make('name') ->label(Federation::transAttribute('name')) ->required();
您可以使用以下方式使用HasTranslateableModel
特性
示例
<?php namespace Maggomann\YourPackageFolder\Models; use Illuminate\Database\Eloquent\Model; use Maggomann\FilamentModelTranslator\Traits\HasTranslateableModel; class TranslateableModel extends Model { use HasTranslateableModel; protected static ?string $translateablePackageKey = 'your-package-name::'; }
<?php namespace Maggomann\YourPackageFolder\Models; class Federation extends TranslateableModel {
或
<?php namespace Maggomann\YourPackageFolder\Models; use Illuminate\Database\Eloquent\Model; use Maggomann\FilamentModelTranslator\Traits\HasTranslateableModel; class Federation extends Model { use HasTranslateableModel; protected static ?string $translateablePackageKey = 'your-package-name::';
测试
composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请审查我们的安全策略,了解如何报告安全漏洞。
鸣谢
许可证
麻省理工学院许可证(MIT)。请参阅许可证文件以获取更多信息。
免责声明
请注意,这些Filament的包不由Filament官方运营,也不提供Filament团队的支持或保修。使用这些包的风险由您自行承担。
该项目代表Filament的非官方扩展,并由一个独立的开发者社区维护。我们努力保持与当前版本的Filament的兼容性,但我们不能保证这些包能够完美运行或与Filament的将来版本兼容。
我们建议用户在使用这些包之前创建项目备份并彻底测试它们。如果您有任何问题、问题或建议,我们可以协助您。但是,请注意,我们无法为这些包提供官方支持。
我们想强调,Filament是一个独立于本项目的开发者社区。有关Filament的更多信息,请参阅官方Filament网站。
请阅读许可条款,了解使用这些包的条件。