该选择允许用户选择3种语言(英语,西班牙语和德语)中的1种。目的是,如果用户选择英语,则网站的所有内容都将更改为英语,其他语言也将更改为英语。
但是,它不起作用。没有错误出现,但是,当用户在选择菜单中选择一种语言时,不会翻译站点内容。你知道为什么吗?
LanguageController:
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();
});
答案 0 :(得分:0)
在您的HTML代码中,您可以尝试使用id="language"
代替name="language"
吗? jQuery代码中的选择器实际上希望id是“语言”,而不是名称。