goodvin/langust

一个 Laravel 扩展包

v0.1-alpha 2015-03-23 09:27 UTC

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:模型

  1. 可翻译模型 Article 应使用特质 Goodvin\Langust\Langust
  2. 翻译模型的约定是 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