【发布时间】:2018-12-26 16:13:21
【问题描述】:
该选择允许用户从 3 种语言(英语、西班牙语和德语)中选择一种。目标是,如果用户选择英语,则站点的所有内容都变为英语,其他语言也一样。
但是,它不起作用。不会出现错误,但是当用户在选择菜单中选择一种语言时,不会翻译网站内容。你知道为什么吗?
语言控制器:
class LanguageController extends Controller
{
public function changeLanguage(Request $request)
{
if(Session::has(locale)){
session()->put('locale', $request->language);}
else{
session()->put('locale', 'en');
}
return redirect()->back();
}
}
HTML:
<form method="post" action="{{route('site.translate')}}" id="translate">
{{csrf_field()}}
<select name="language" id="language">
<option value="en">English</option>
<option value="de">German</option>
<option value="es">Spanish</option>
</select>
</form>
LocaleMiddleware:
<?php
namespace App\Http\Middleware;
use Closure;
class LocaleMiddleware
{
protected $languages = ['en','fr','es', 'de'];
public function handle($request, Closure $next)
{
if(!session()->has('locale'))
{
session()->put('locale', $request->getPreferredLanguage($this->languages));
}
app()->setLocale(session('locale'));
return $next($request);
}
}
在选择菜单更改时提交表单的代码:
var myFormName = "translate";
$('#language').on('change', function() {
document.forms[myFormName].submit();
});
【问题讨论】:
-
试试这个package
-
既然您已经在使用
jQuery,为什么不使用$("#translate").submit()而不是document.forms[myFormName]? -
谢谢,但同样的错误。
-
谢谢,这个包对于在 "Route::group(['prefix' => LaravelLocalization::setLocale()], function()" 内创建所有站点路由是必需的?