Laavel-admin에 언어 전환 추가
16380 단어 laravel5PHPlaravel-adminLaravel
Laavel-admin 관리 화면에서
이런 언어 전환 단추를 설치해 보았다.
컨디션
Laravel 5.8
Laravel-admin 1.7.2
설치 단계
언어 전환 기능 추가
참조여기 기사. 언어 전환 기능 추가
먼저 라벨의 기본 언어를 일본어로 바꾼 다음에 라벨-admin의 언어로 전환합니다.
config/app.php
'locale' => 'ja', //もとはen
다음은 config/language입니다.php에 쓰기:config/language.php
<?php
/**
* 登録言語
*/
return [
'ja' => 'Japanese',
'en' => 'English',
];
그리고 언어를 컨트롤러로 전환합니다php artisan make:controller LanguageController
생성된 컨트롤러App\Http\Controllers\LanguageController
use Session;
class LanguageController extends Controller
{
/**
* 言語切替
*
* @param string $lang config/language.php のキー
*/
public function switchLanguage($lang) {
if(array_key_exists($lang,config('language'))) { //登録されている言語の場合
Session::put('applocale',$lang);
}else { //それ以外
Session::put('applocale','ja');
}
return redirect()->back();
}
}
언어로 페이지를 전환합니다.php로 변경routes/web.php
Route::get('/admin/lang/{lang}','LanguageController@switchLanguage');
이 페이지를 삽입하여 언어를 전환합니다.마지막으로 중간부품을 추가하려면 다음과 같이 하십시오.
php artisan make:middleware Language
중간부품을 만들고 Kernel에 로그인App/Http/Kernel.php
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\Language::class, //これを追加する
],
];
다음 제작의 중간부품App/Http/Middleware/Language.php
use Session;
use App;
class Language
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Session::has('applocale') && array_key_exists(Session::get('applocale'), config('language'))) {
App::setLocale(Session::get('applocale'));
}
else {
App::setLocale('ja');
}
return $next($request);
}
}
를 참고하십시오.번역 파일 준비
다국어로 하는 방법으로.
__('メッセージ');
trans('messeage');
__()
문장을 키워드 정의 번역 파일로 직접 지정하고trans()
resource/lang/ja/이하 정의의 배열 키를 지정합니다. 자세한 내용은 문서를 참조하십시오.이번에 사용한 것은
__()
의 실복이다.json 파일 추가resource/lang/en.json
{
"タイトル" : "Title",
"価格" : "Price",
"ページ数" : "Page",
"カテゴリー" : "Category",
"著者" : "Authoer",
"作成日時" : "Created at",
"更新日時" : "Updated at"
}
왼쪽은 호출 키, 오른쪽은 번역.Admin\Controllers\BookController.php
protected function grid()
{
$grid = new Grid(new Book);
$grid->column('id','Id');
$grid->column('title', __('タイトル'));
$grid->column('price', __('価格'));
$grid->column('page', __('ページ数'));
$grid->column('category_id', __('カテゴリー'));
$grid->column('author_id', __('著者'));
$grid->column('created_at', __('作成日時'));
$grid->column('updated_at', __('更新日時'));
return $grid;
}
이렇게 하다그렇습니다. 일본어는 확실히 영어로 번역되었습니다.
언어 전환 버튼 추가
Laavel-admin의 머리에 언어 전환 버튼을 추가합니다.
우선 bootstrap입니다.php에 다음을 추가합니다.
Admin/bootstrap.php
Admin::navbar(function (\Encore\Admin\Widgets\Navbar $navbar) {
$navbar->right(view('admin.language',[
'lang' => config('language'),
]));
});
내비게이션 표시줄의 오른쪽에view가 지정한 blade를 추가합니다. 왼쪽에 추가하려면 left
을 사용하십시오.다음 단추를 위한 blade 준비:
resources/views/admin/language.blade.php
<li class="dropdown lang lang-switch" style="position:relative;">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="true">
<span class="hidden-xs">Language</span>
</a>
<ul class="dropdown-menu" style="position: absolute; left:0px; min-width:180px;">
<li class="lang-header">
</li>
<li class="lang-footer clearfix" style="display:flex; justify-content: left; flex-wrap:wrap;">
@foreach ($lang as $key => $label)
<div style="display:inline-block; padding-left:5px; padding-bottom:2px;">
<a href="/admin/lang/{{$key}}" class="btn btn-default btn-flat lang-change">{{$label}}</a>
</div>
@endforeach
</li>
</ul>
</li>
첫 번째 화면이 완성됐습니다.언어 전환 시 전체 화면 다시 불러오기
Laavel-admin에서 페이지 이동은 pjax로 이루어집니다. 따라서 눈썹과 사이드바 등은 추가 언어 전환 단추를 눌러도 원래의 언어 상태를 유지합니다. 따라서 언어를 전환할 때만 pjax를 통해 페이지 이동을 하지 않습니다.
public\vendor\laravel-admin\laravel-admin\laravel-admin.js
// 言語変更ボタンも例外にする
//もとは $(document).pjax('a:not(a[target="_blank"])', {
$(document).pjax('a:not(a[target="_blank"]):not(.lang-change)', {
container: '#pjax-container'
});
이렇게 하면 언어를 전환할 때 일반적인 페이지 전환이 진행됩니다.참고 자료
Reference
이 문제에 관하여(Laavel-admin에 언어 전환 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y-oksaku/items/dbe7c026db5f6e2e15c6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)