goodvin / langust
一个 Laravel 扩展包
v0.1-alpha
2015-03-23 09:27 UTC
Requires
- php: >=5.4.0
This package is not auto-updated.
Last update: 2024-09-28 17:12:35 UTC
README
这是一个为可翻译模型而设计的 Laravel 扩展包。
##演示
创建新的翻译
App\Models\Article::create([ 'url' => 'your-url', 'en' => [ 'name' => 'Article english name', 'title' => 'Article english title', ], 'fr' => [ 'name' => 'Article french name', 'title' => 'Article french title', ], ]);
获取已翻译属性
$article = App\Models\Article::where('url', '=', 'your-url')->first(); App::setLocale('en'); echo $article->name; echo $article->translate('en')->name; echo $article->en->name;
设置已翻译属性
$article->url = 'your-url-change'; $article->name = 'Article english name change'; $article->en->name = 'Article english name change'; $article->translate('fr')->title= 'Article french title change'; $article->save();
或者
$article->save([ 'url' => 'your-url-change', 'es' => [ 'name' => 'Article spain name', 'title' => 'Article spain title', ], ]);
或者
$article->fill([ 'en' => [ 'name' => 'Article english name', 'title' => 'Article english title', ], 'es' => [ 'name' => 'Article spain name', 'title' => 'Article spain title', ], ])->save();
##4步骤安装
###步骤1:安装扩展包
通过执行以下命令将扩展包添加到您的 composer.json 中。
composer require goodvin/langust:dev-master
接下来,将服务提供者添加到 config/app.php
文件中
'Goodvin\Langust\LangustServiceProvider',
###步骤2:迁移
例如,我们需要翻译 Article
模型。它需要一个额外的 ArticleLang
模型。
Schema::create('articles', function(Blueprint $table){ $table->increments('id'); $table->string('url', 200); $table->timestamps(); });
Schema::create('article_langs', function(Blueprint $table){ $table->increments('id'); $table->string('name', 200); $table->string('title', 200); $table->integer('article_id')->unsigned(); $table->enum('lang', [ 'en', 'fr', 'es', ])->index(); $table->unique([ 'article_id', 'lang' ]); $table->foreign('article_id') ->references('id') ->on('articles') ->onDelete('cascade'); });
###步骤3:模型
- 可翻译模型
Article
应使用特质Goodvin\Langust\Langust
。 - 翻译模型的约定是
ArticleLang
。
// /app/Models/Article.php <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Article extends Model { use \Goodvin\Langust\Langust; protected $fillable = [ 'url', ]; protected $langust = [ 'name', 'title', ]; } // /app/Models/ArticleLang.php <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class ArticleLang extends Model { public $timestamps = false; }
在可翻译模型中不需要设置可填充字段 :)
###步骤4:配置
Laravel 5.*
php artisan vendor:publish