larasup / localization
Laravel 数据库本地化包
1.0.5
2023-11-26 13:20 UTC
Requires
- php: >=8.2
- illuminate/database: ^6.0
- illuminate/support: ^6.0
This package is not auto-updated.
Last update: 2024-09-30 15:48:40 UTC
README
这是一个用于 Laravel 数据库本地化的小包。现在您可以通过数据库更改本地化字段。实际上,表中的所有本地化字段将在一周内缓存。这个包对界面本地化或某些静态内容很有用。
安装
composer require larasup/localiztion
准备中
1. 将服务提供者添加到 config/app.php
'providers' => [
...
Larasup\Localization\LocalizationServiceProvider::class,
...
];
2. 运行本地化迁移
php artisan migrate
用法
1. 准备你的模型
添加 Localize
特性,将 $localize
属性添加到你的 Eloquent 模型中,并实现 iLocalize 接口以支持 phpStorm。
class Category extends Model implements iLocalize
{
use Localize;
protected array $localize = ['title'];
}
在此步骤之后,你的模型将拥有 title
字段。
2. 现在你可以使用它了
2.1 获取具有本地化字段的模型
public static function getLocalizedCategories(): Collection
{
$categories = Category::query()
->with('children.children')
->whereNull('parent_id')
->get();
LocalizationService::enrichCollection($categories, Category::class);
return $categories;
}
之后,你可以从模型中获取本地化字段
$categories = getLocalizedCategories();
foreach ($categories as $category) {
echo $category->title;
}
注意:这是一个虚拟字段,你不能在 where
子句中使用它。可能在下一个版本中修复。
2.2 设置本地化字段
如果你想设置本地化字段,你应该使用 setLocalizedField
方法。
LocalizationService::setLocalization(
$objectClass, // $model->getMorphName() for example 'App/Models/Category'
$modelPrimaryValue, // $model->getKey() for example 1
$field, // Name of localized field, in our case 'title'
$value, // Value of localized field, for example 'Categoría de prueba'
$language // Language of localized field, for example 'es'
);