翻译网站内容:使用未定义的恒定语言环境-假定为'locale

时间:2018-07-14 00:11:08

标签: php laravel

该选择允许用户选择3种语言(英语,西班牙语和德语)中的1种。目的是,如果用户选择英语,则网站的所有内容都将变为英语,其他语言也将变为相同。

但是有此错误:

  

“使用未定义的恒定语言环境-假定为'locale'”。

LanguageController:

class LanguageController extends Controller
{
    public function changeLanguage(Request $request)
    {
        if(Session::has(locale)){
            session()->set('locale', $request->language);}
        else{
            session()->set('locale', 'en');
        }

        return redirect()->back();
    }
}

HTML:

    <form method="post" action="{{route('site.translate')}}" id="translate">
      {{csrf_field()}}
      <select name="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 :(得分:1)

在区域设置周围加上引号...所以...

if(Session :: has(locale)){

更改为

if(Session :: has('locale')){

- 语法提示:

variable = $var
constant = const
string = 'string'