wakjoko / localizable
将任何Eloquent属性转换为多语言
0.1.0
2023-08-08 04:46 UTC
Requires
- php: ^8.0
- illuminate/database: ^9.0|^10.0
- illuminate/support: ^9.18|^10.0
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-10 00:38:27 UTC
README
将任何Eloquent属性转换为多语言。
我发现spatie的翻译包非常出色,但它缺乏查询灵活性,这让我想构建这个包。
安装
使用Composer安装包
composer require wakjoko/localizable
创建用于数据存储的表
php artisan migrate
设置
使用以下方式启用模型本地化
class Person extends Model { use \Wakjoko\Localizable\Localizable; protected $localizable = ['name', 'title', 'gender']; }
使用自定义数据库连接或表名
LOCALIZABLE_DB=mysql LOCALIZABLE_TABLE=multilanguage
你会得到什么?
预加载本地化语言翻译
$person = Person::withLocalizable()->find(1); $person = Person::withLocalizable()->first(); $persons = Person::withLocalizable()->get(); $persons = Person::withLocalizable()->paginate();
基于本地化语言翻译缩小Person结果
// find anyone with he's name in english contains "john" $models = Person::withLocalizable( attribute: 'name', locale: 'en', value: 'john' ) ->get();
创建、更新本地化语言翻译
// insert new data along with localized language translation $person = Person::create([ 'name' => [ 'ms' => 'Nuh', 'en' => 'Noah' ] ]); // another way of creating new data $person = new Person([ 'name' => [ 'ms' => 'Nuh', 'en' => 'Noah' ] ]); $person->save(); // change my english name $person->name('en', 'Charlie'); $person->save(); // or update via attribute $person->name = [ 'ms' => 'Nuh', 'en' => 'Noah' ]; $person->save(); // or use update() instead of save() $person->update(['name' => ['en' => 'John']]);
切换语言
$person->name // prints Noah: use default lang in config('app.locale') $person->setLocale('ms'); // switch language only on this model $person->name // prints: Nuh $person->name('en'); // prints Noah: another way to get localized translation without changing default lang on the model
在Tinker中也可以检查本地化数据
App\Models\Person {#10328 id: 1, name: [ "en" => "Noah", "ms" => "Nuh", ], }
测试
naah.. nothing yet haha!
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献指南。
安全
如果您发现任何与安全相关的问题,请通过wakjoko@gmail.com发送邮件,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。