mindtwo / laravel-translatable
此包是Laravel的扩展,用于轻松翻译模型属性,使您的应用程序能够无缝支持多语言。
1.2.2
2024-07-05 07:31 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.18|^11.0
- illuminate/database: ^10.18|^11.0
- mindtwo/laravel-auto-create-uuid: ^2.6
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- larastan/larastan: ^2.0.1
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- orchestra/testbench: ^8.8|^9.0
- pestphp/pest: ^2.30
- pestphp/pest-plugin-arch: ^2.6
- pestphp/pest-plugin-laravel: ^2.2
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
This package is auto-updated.
Last update: 2024-09-05 07:58:14 UTC
README
概述
mindtwo/laravel-translatable
包为Laravel应用程序中管理多语言模型提供了一种简单而有效的方式。它允许您轻松地将Eloquent模型属性翻译成多种语言,无需为每种语言单独创建表。
功能
- 易于与Eloquent模型集成。
- 无缝翻译模型属性。
- 简单配置和使用。
安装
要在您的Laravel项目中安装此包,请运行以下命令
composer require mindtwo/laravel-translatable
您可以使用以下命令发布并运行迁移
php artisan vendor:publish --tag="translatable-migrations"
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="translatable-config"
这是发布后的配置文件内容
<?php use mindtwo\LaravelTranslatable\Models\Translatable; return [ 'model' => Translatable::class, ];
设置
安装后,您需要发布并运行迁移
php artisan vendor:publish --provider="mindtwo\LaravelTranslatable\TranslatableServiceProvider"
php artisan migrate
这将创建数据库中的 translatable
表。
使用方法
创建可翻译模型
-
迁移:使用提供的
create_translatable_table.php
迁移来设置translatable
表。 -
模型特质:在您的模型中包含
HasTranslations
特质。此特质提供与翻译交互的方法。use mindtwo\LaravelTranslatable\Traits\HasTranslations; class YourModel extends Model { use HasTranslations; // Model content }
-
可翻译模型:使用
Translatable
模型来存储翻译。它使用AutoCreateUuid
特质进行唯一标识。use mindtwo\LaravelTranslatable\Models\Translatable; // Usage within your application logic
处理翻译
-
添加翻译:
$yourModelInstance->translations()->create([ 'key' => 'your_key', 'locale' => 'en', 'text' => 'Your translation text' ]);
-
检查翻译:
$exists = $yourModelInstance->hasTranslation('your_key', 'en');
-
获取翻译:
$translation = $yourModelInstance->getTranslation('your_key', 'en');
-
检索所有翻译:
$translations = $yourModelInstance->getTranslations();
最佳实践
- 在尝试检索翻译之前,请始终检查翻译是否存在。
- 在不同模型间使用一致的键,以保持清晰。
- 定期备份您的翻译,因为它们存储在数据库中。
测试
composer test
变更日志
请参阅 变更日志 了解最近更改的更多信息。
贡献
请参阅 贡献指南 了解详细信息。
安全漏洞
请参阅 我们的安全策略 了解如何报告安全漏洞。
鸣谢
许可证
MIT许可证(MIT)。请参阅 许可证文件 了解更多信息。