liaosankai / laravel-eloquent-i18n
v1.2.1
2018-07-29 17:30 UTC
Requires
- php: ^7.1.3
Requires (Dev)
- ariby/ulid: ^0.2.1
- mockery/mockery: ^1.1
- orchestra/database: ^3.5
- orchestra/testbench: ^3.5
- phpunit/phpunit: ~7.0
- vlucas/phpdotenv: ^2.4
README
要求
- PHP >= 7.0.0
- Laravel >= 5.5.0
安装
您可以通过composer安装此包
composer require liaosankai/laravel-eloquent-i18n
制作可翻译的模型
use Illuminate\Database\Eloquent\Model;
use Liaosankai\LaravelEloquentI18n\Models\TranslationTrait;
class Book extends Model
{
use TranslationTrait;
public $i18nable = [
'title',
'content',
'author',
];
}
编写翻译数据
设置原始属性
$book = new Book();
$book->title = 'raw title';
设置单个地区的单个属性
$book = new Book();
$book->title = 'raw title';
$book->i18n('zh-Hant')->title = '正體中文的標題';
$book->i18n('zh-Hans')->title = '简体中文的标题';
$book->save();
设置单个属性的多个地区
$book = new Book();
$book->title = 'raw title';
$book->title = [
'zh-Hant' => '正體中文的標題',
'zh-Hans' => '简体中文的标题',
'en' => 'english title',
];
$book->save();
设置多个地区的多个属性
$book = new Book();
$book->title = 'raw title';
$book->i18n([
'zh-Hant' => [
'title' => '正體中文的標題',
'content' => '正體中文的內容',
],
'zh-Hans' => [
'title' => '简体中文的标题',
'content' => '简体中文的內容',
],
'en' => [
'title' => 'english title',
'content' => 'english content',
],
])->save();
读取翻译数据
安排存在翻译数据:
$book = new Book();
$book->title = 'raw title';
$book->content = 'raw content';
$book->author = 'raw author';
$book->i18n([
'zh-Hant' => [
'title' => '正體中文的標題',
'content' => '正體中文的內容',
],
'zh-Hans' => [
'title' => '简体中文的标题',
'content' => '简体中文的內容',
],
'en' => [
'title' => 'english title',
'content' => 'english content',
],
])->save();
i18n()如果未分配任何地区,则使用所有地区数组
App::setLocale('zh-Hant');
$book->i18n()->title;
/*
[
'zh-Hant' => '正體中文的標題',
'zh-Hans' => '简体中文的标题',
'en' => 'english title',
]
*/
i18n()使用分配的地区
$book->i18n('zh-Hant')->title; // 正體中文的標題
$book->i18n('zh-Hans')->title; // 简体中文的标题
$book->i18n('zh-en')->title; // english title
如果找不到分配的地区,则使用app地区
App::setLocale('zh-Hant');
$book->i18n('ja')->title; // 正體中文的標題
如果找不到分配的地区属性,则使用原始数据
App::setLocale('zh-Hant');
$book->i18n('zh-Hant')->author; // raw author
使用i18n()之外的原始数据
$book->title; // raw title
$book->content; // raw content
过滤翻译数据
使用模型范围where
$book->i18nLike([
'filter' => [
'title' => 'keywords for title',
'content' => 'keywords for content'.
],
'locale' => 'zh-Hant',
])->get();
许可证
laravel-eloquent-i18n
是在MIT许可证下发布的