我正在Laravel創建一個後端應用程序。後端需要管理下載到應用程序的對象集合。對象必須根據設備語言進行本地化。Laravel多語言數據庫管理
在Laravel有沒有簡單的方法來做到這一點?也許是一個雄辯的或Laravel插件?我想避免自己寫本地化支持。
(內置在Laravel定位是隻爲界面,它不支持雄辯對象)
我正在Laravel創建一個後端應用程序。後端需要管理下載到應用程序的對象集合。對象必須根據設備語言進行本地化。Laravel多語言數據庫管理
在Laravel有沒有簡單的方法來做到這一點?也許是一個雄辯的或Laravel插件?我想避免自己寫本地化支持。
(內置在Laravel定位是隻爲界面,它不支持雄辯對象)
你需要編寫你自己的。首先,你將不得不模型數據庫表來支持多語言內容,然後在你的模型,你就可以這樣說:
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();
高興幫助的答案似乎完美的多語言網站與許多語言。 我發現當你的網站只有兩種/三種語言時,這樣做很笨拙。
我所做的是爲每個可翻譯字段設置兩列。 爲title
屬性我在數據庫中有title_en
和title_es
。 之後,在控制器中只需設置此方法即可進行自動翻譯。
public function getTitleAttribute()
{
$locale = App::getLocale();
$column = "title_" . $locale;
return $this->{$column};
}
現在,當您撥打Post::find($id)->title
時,它會自動獲得當前語言版本。
希望它有幫助。 乾杯!
繼@ @ user1067281答案我發現了一個多語言站點的高級教程。
你應該完全檢查了這一點:https://medium.com/laravel-4/26cdc75e4810
我做了類似的,但更普遍的
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');
請考慮添加解釋,而不僅僅是一個鏈接。 – Onik
對此不瞭解。感謝提示@Onik –