wakjoko/localizable

将任何Eloquent属性转换为多语言

0.1.0 2023-08-08 04:46 UTC

This package is auto-updated.

Last update: 2024-09-10 00:38:27 UTC


README

Latest Version on Packagist MIT Licensed Total Downloads

将任何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)。有关更多信息,请参阅许可证文件