2017-02-22 26 views
3

я просто начать использовать Laravel 5.4, В login.blade.php я естьИзменить язык Laravel 5

enter image description here

Я не хотел поставить простой текст в HTML коде, есть решение, чтобы все тексты в отдельных файлах lang использовали их динамически?

Спасибо

+1

https://laravel.com/docs/5.4/localization – Sebastian

ответ

9

Папка resources/lang содержит файлы локализации. Имя файла соответствует представлению, которое будет использоваться. Для того, чтобы получить значение из этого файла, вы можете просто использовать следующий код:

Lang::get('localization_file_name.variable_name');

Если вы хотите, чтобы реализовать возможность выбора языка, вам нужно всего лишь несколько простых шагов, чтобы применить:

  1. В config/app.php добавить этот код:

    'locale' => 'ru', 
    'locales' => ['ru', 'en'], 
    

    название местности может быть любой.

  2. В app/Http/Middleware создайте новый файл с именем Locale.php. Содержимое файла должно быть что-то вроде этого:

    <?php 
    
    namespace App\Http\Middleware; 
    
    use Closure; 
    use App; 
    use Config; 
    use Session; 
    
    class Locale 
    { 
        /** 
        * Handle an incoming request. 
        * 
        * @param \Illuminate\Http\Request $request 
        * @param \Closure $next 
        * @return mixed 
        */ 
        public function handle($request, Closure $next) 
        { 
        $raw_locale = Session::get('locale'); 
        if (in_array($raw_locale, Config::get('app.locales'))) { 
         $locale = $raw_locale; 
        } 
        else $locale = Config::get('app.locale'); 
         App::setLocale($locale); 
         return $next($request); 
        } 
    } 
    
  3. В app/Http/Kernel.php в $ middlewareGroupsarray добавить следующую строку:

    \App\Http\Middleware\Locale::class,

  4. В routes/web.php добавить:

    Route::get('setlocale/{locale}', function ($locale) { 
        if (in_array($locale, \Config::get('app.locales'))) { 
        Session::put('locale', $locale); 
        } 
        return redirect()->back(); 
    }); 
    
0

Laravel имеет модуль localization.

В основном вы создаете файл, например: resources/lang/en/login.php и положить

return [ 'header' => 'Login' ];

И в шаблоне вы используете @lang('login.header') вместо Login.

У вас может быть столько файлов в вашем каталоге /resources/lang/en и с помощью директивы @lang blade вы поместите свое имя файла (без расширения) и нужное значение, разделенное точкой.