根据选择菜单单击翻译网站内容

时间:2018-07-18 16:43:43

标签: jquery laravel

该选择允许用户选择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();
        });

1 个答案:

答案 0 :(得分:0)

在您的HTML代码中,您可以尝试使用id="language"代替name="language"吗? jQuery代码中的选择器实际上希望id是“语言”,而不是名称。