2013-09-30 19 views
6

私はLaravelにバックエンドを持つアプリケーションを作成しています。バックエンドは、アプリケーションにダウンロードされるオブジェクトのコレクションを管理する必要があります。オブジェクトは、デバイス言語に応じてローカライズされている必要があります。Laravelによる多言語データベース管理

Laravelでこれを行う簡単な方法はありますか?おそらく雄弁な、またはLaravel-pluginですか?私は自分でローカリゼーションサポートを書いてはいけません。

(Laravelにローカライズに建てられたが、唯一のインターフェイスを指定して、それは雄弁オブジェクトをサポートしていません)

答えて

9

あなたは自分でそれを記述する必要があります。まず、多言語コンテンツをサポートするようにデータベーステーブルをモデル化する必要がありますし、その後、あなたのモデルでは、あなたのような何かを言うことができるようになります:

class Content extends Eloquent 
{ 

    public function scopeEnglish($query) 
    { 
      return $query->where('language', '=', 'en'); 
    } 

    public function scopeSpanish($query) 
    { 
     return $query->where('language', '=', 'es'); 
    } 
} 


class Post extends Eloquent 
{ 
    public function content() 
    { 
    return $this->hasMany('Content'); 
    } 
} 

をして、あなたはそれが好きで使用することができます:

$englishContent = Posts::find($id)->content->english()->get(); 
$spanishContent = Posts::find($id)->content->spanish()->get(); 
6

うれしいですヘルプの答えは、多言語のサイトの多くの言語に最適です。 あなたのサイトの言語が2つか3つしかないときは、それを行うのはちょっとしたことだと分かりました。

私が行ったことは、各翻訳可能なフィールドに2つの列があることです。私がデータベースに持っているtitle属性の title_entitle_es。 その後、コントローラでこのメソッドを設定して自動翻訳を行います。

public function getTitleAttribute() 
{ 
    $locale = App::getLocale(); 
    $column = "title_" . $locale; 
    return $this->{$column}; 
} 

Post::find($id)->titleに電話すると、現在の言語のものが自動的に取得されます。

希望します。 乾杯!

1

@ user1067281の回答に続いて、私は多言語サイトのための偉大な高度なチュートリアルを見つけました。

あなたは完全にこれをチェックする必要がありますhttps://medium.com/laravel-4/26cdc75e4810

+2

リンクだけでなく、説明を追加することをおすすめします。 – Onik

+0

これは初めてです。 @Onikのヒントをありがとう –

4

を私は今

public function TextTrans($text) 
{ 
    $locale=App::getLocale(); 
    $column=$text.'_'.$locale; 

    return $this->{$column}; 
} 

私は各言語バージョンのためだけでなく、フィールドごとに似ていますが、より普遍的な

Schema::create('index', function(Blueprint $table) { 
     $table->increments('id'); 
     $table->string('title_uk'); 
     $table->string('title_ru'); 
     $table->string('title_en'); 
     $table->string('heading_uk'); 
     $table->string('heading_ru'); 
     $table->string('heading_en'); 
     $table->string('photo'); 
     $table->timestamps(); 
    }); 

モデルました特定の機能を規定するものではなく、これをすべて引き起こします:

$text=Index::find('1'); $text->TextTrans('title'); $text->TextTrans('heading');

関連する問題