那么您的问题是如何找到一种好方法让管理员为实体添加翻译?
我也使用该捆绑包,我所做的方法是将语言环境放在我的 URL 中并在我的 routes.php 中检测它。
然后我在我的管理员后端的标题中创建了一个切换语言按钮,这样他们就可以轻松地切换到不同的语言环境。这样他们就可以在语言环境“en”中创建实体,然后只需在实体的编辑表单上单击将语言切换为“nl”,然后为“nl”语言环境添加翻译内容(无需任何额外的控制器)。
我的 routes.php 中的语言环境检测如下所示:
$locale = Request::segment(1);
if(in_array($locale, array('nl', 'zh'))){
App::setLocale($locale);
} else {
// fall back to the default locale (en)
$locale = null;
}
// Locale prefix group without setLocale filter
Route::group(array('prefix' => $locale), function()
{
// Language switch
Route::get('/switch-language/{locale}', array('as' => 'switchlanguage', 'uses' => 'DefaultController@switchLanguage'))->where('locale', '(en|nl|zh)');
// other routes ....
});
在 switchLanguage 中,我只需将 url 中的旧语言环境替换为新语言环境。例如从 www.example.com/zh/blabla 到 www.example.com/nl/blabla
然后在我的控制器中,我可以为我的实体分配值,而无需查看语言环境或使用 ->translate() 方法(因为 App::getLocale() 已设置为我的新语言环境)
控制器更新函数如下所示:
$article->title = Input::get('title');
$article->save();
title 是翻译后的字段,它会自动保存在我的 routes.php 中 App::getLocale() 中设置的语言环境中
希望能助你一臂之力。