Публикация на тему

Создание мульти-язычного приложения с помощью Laravel


В публикации рассмотрено использование serviceProvider-ов и Middleware для реализации перевода элементов web-приложения.



Автор

Михалькевич Александр Викторович


Публикация

Наименование Создание мульти-язычного приложения с помощью Laravel

Автор А.В.Михалькевич

Специальность В публикации рассмотрено использование serviceProvider-ов и Middleware для реализации перевода элементов web-приложения.,

Анотация

Anotation in English

Ключевые слова

Количество символов 4040

Содержание

Введение

1 Способы реализации перевода

--

2 Практические решения для Middleware

1) создать middleware lang

php artisan make:middleware LangMiddleware

2) подключить LangMiddleware в файле Kernel.php и определить короткое имя.

protected $routeMiddleware = [

'auth' => 'App\Http\Middleware\Authenticate',

'lang' => 'App\Http\Middleware\LangMiddleware',

'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',

];

3) Находим метод handle LangMiddleware public function handle($request, Closure $next){ return $next($request) }

4) Логика обработки запроса

 
public function handle($request, Closure $next){

if(isset($_GET['lang'])){

$lang = $_GET['lang'];

}else{

   if(isset($_COOKIE['lang'])){

     $lang = $_COOKIE['lang'];

   }else{

     $lang = 'ru';

   }

}
App::setLocale($lang);
setcookie('lang', $lang, time()+3600, '/');
$request->merge(compact('lang'));

return $next($request)

}

5) web.php

Route::group(['middleware' => ['lang']], function(){
	Route::get('/', ....)
})
 

6) resources/lang/en
Validation.php
Menu.php

return [
 'about' => 'About',
 'news' => 'News',
]
/ru
Validation.php
Menu.php
return [
 'about' => 'О компании',
 'news' => 'Новости',
]

7) blade {{__('menu.about')}}


use Illuminate\Http\Request;
use App;
public function getIndex(Request $request){
	// $request->lang;
	// App::getLocale();
	$obj = Maintext::where('url', 'index')
			->where('lang', $request->lang)
			->first();
	$obj->name;
}

3 Практические решения для ServiceProvider

1) php artisan make:provider LangProvider

2) подключить provider config/app.php

public function boot(){

View::composer();

View::composer('layouts.app', 'App\Providers\ViewComposers\LangComposer');

}

3) ViewComposers\LangComposer.php

class LangComposer {

 public function compose(View $view){

 $lang = App\getLocale();

 $view->with('lang', $lang);

}

}

4) {{$lang}}

Заключение

Список использованных источников

Приложения

1. [programm] 5c103421558fd_bg.jpg