6

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

Laravelでこれを行う簡単な方法はありますか? おそらく雄弁またはLaravelプラグインですか?ローカリゼーション サポートを自分で作成することは避けたいと思います。

(Laravel に組み込まれているローカライゼーションはインターフェース専用であり、Eloquent オブジェクトはサポートしていません)

4

5 に答える 5

10

あなたは自分でそれを書く必要があります。最初に、多言語コンテンツをサポートするためにデータベース テーブルをモデル化する必要があります。次に、モデルで次のように記述できるようになります。

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();
于 2013-09-30T11:36:44.123 に答える
7

私は似たようなことをしましたが、より普遍的です

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();
    });

モデル

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

    return $this->{$column};
}

ここで、各言語バージョンと各フィールドについて、特定の機能を規定せず、これらすべてを引き起こします。

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

于 2016-02-22T09:14:46.690 に答える
1

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

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

于 2014-05-05T00:43:24.937 に答える
0

Eloquent モデルと静的言語リソース用の翻訳パッケージがいくつかあります。それらを組み合わせることができます。それはあなたのシナリオ次第です。

これらのパッケージは、リソースを翻訳したり、エクストラネット (一種のフロントエンド) を介してサード パーティ (顧客やコンテンツ クリエーターなど) に翻訳を外注したりしたい場合に役立つ可能性があるため、翻訳ファイルをデータベースに保存します:
https://github .com/barryvdh/laravel-translation-manager
https://github.com/joedixon/laravel-translation

Eloquent モデルを多言語化するには、JSON 配列として保存します。一種の CMS のようなアプリケーションを作成する場合、多言語のタイトルまたはコンテンツ ボディが必要になります。以下のパッケージがこれを達成するのに役立つかもしれません:
https://github.com/Astrotomic/laravel-translatable
https://github.com/spatie/laravel-translatable

于 2021-02-04T09:02:36.863 に答える