From 4c8d6d6f9c3ff5ca4f38c0b051e2b614b0263023 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Wed, 3 Jan 2018 07:13:34 +0800 Subject: [PATCH] Add "en" and "id" lang switch on user profile edit page Add lang column on users table Add Lang middleware class Change default locale config to "en" --- app/Entities/Users/User.php | 2 +- app/Http/Controllers/Users/ProfileController.php | 8 +++++++- app/Http/Kernel.php | 1 + app/Http/Middleware/Lang.php | 24 ++++++++++++++++++++++ config/app.php | 2 +- .../2014_10_12_000000_create_users_table.php | 1 + resources/lang/en/bank_account.php | 2 +- resources/lang/en/lang.php | 7 +++++++ resources/lang/en/user.php | 1 + resources/lang/id/lang.php | 7 +++++++ resources/views/reports/current-credits.blade.php | 4 ++-- resources/views/users/profile/edit.blade.php | 1 + resources/views/users/profile/show.blade.php | 1 + tests/Feature/Users/UserProfileTest.php | 2 ++ 14 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 app/Http/Middleware/Lang.php create mode 100644 resources/lang/en/lang.php create mode 100644 resources/lang/id/lang.php diff --git a/app/Entities/Users/User.php b/app/Entities/Users/User.php index 23549be..d6bcd60 100644 --- a/app/Entities/Users/User.php +++ b/app/Entities/Users/User.php @@ -9,7 +9,7 @@ class User extends Authenticatable { use Notifiable; - protected $fillable = ['name', 'email', 'password', 'api_token']; + protected $fillable = ['name', 'email', 'password', 'api_token', 'lang']; protected $hidden = ['password', 'remember_token', 'api_token']; public function setPasswordAttribute($value) diff --git a/app/Http/Controllers/Users/ProfileController.php b/app/Http/Controllers/Users/ProfileController.php index 1f03ae9..c4b5584 100644 --- a/app/Http/Controllers/Users/ProfileController.php +++ b/app/Http/Controllers/Users/ProfileController.php @@ -20,7 +20,9 @@ class ProfileController extends Controller public function edit() { - return view('users.profile.edit'); + $langList = ['en' => trans('lang.en'), 'id' => trans('lang.id')]; + + return view('users.profile.edit', compact('langList')); } public function update() @@ -28,14 +30,18 @@ class ProfileController extends Controller request()->validate([ 'name' => 'required|string|max:100', 'email' => 'required|email|max:255', + 'lang' => 'required|string', ]); $user = auth()->user(); $user->name = request('name'); $user->email = request('email'); + $user->lang = request('lang'); $user->save(); + session(['lang' => $user->lang]); + flash(trans('auth.profile_updated'), 'success'); return redirect()->route('users.profile.show'); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 8e97f16..db10927 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -34,6 +34,7 @@ class Kernel extends HttpKernel \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, + \App\Http\Middleware\Lang::class, ], 'api' => [ diff --git a/app/Http/Middleware/Lang.php b/app/Http/Middleware/Lang.php new file mode 100644 index 0000000..4282cb0 --- /dev/null +++ b/app/Http/Middleware/Lang.php @@ -0,0 +1,24 @@ +user()) { + app()->setLocale($request->user()->lang); + } + + return $next($request); + } +} diff --git a/config/app.php b/config/app.php index d96fd6f..5b8dee2 100644 --- a/config/app.php +++ b/config/app.php @@ -78,7 +78,7 @@ return [ | */ - 'locale' => 'id', + 'locale' => 'en', /* |-------------------------------------------------------------------------- diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index b96f2cc..60bf972 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -19,6 +19,7 @@ class CreateUsersTable extends Migration $table->string('password', 60); $table->rememberToken(); $table->string('api_token')->nullable(); + $table->char('lang', 2)->default('en'); $table->timestamps(); }); } diff --git a/resources/lang/en/bank_account.php b/resources/lang/en/bank_account.php index 13a038f..524cee8 100644 --- a/resources/lang/en/bank_account.php +++ b/resources/lang/en/bank_account.php @@ -3,7 +3,7 @@ return [ // Labels 'bank_account' => 'Bank Account', - 'list' => 'Bank Account list', + 'list' => 'Bank Account List', 'empty' => 'Bank Account list is empty', 'back_to_index' => 'Back to Bank Account list', diff --git a/resources/lang/en/lang.php b/resources/lang/en/lang.php new file mode 100644 index 0000000..c5ed2da --- /dev/null +++ b/resources/lang/en/lang.php @@ -0,0 +1,7 @@ + 'Language', + 'en' => 'English', + 'id' => 'Bahasa', +]; diff --git a/resources/lang/en/user.php b/resources/lang/en/user.php index e195672..5a2ff71 100644 --- a/resources/lang/en/user.php +++ b/resources/lang/en/user.php @@ -27,6 +27,7 @@ return [ // Attributes 'name' => 'User Name', 'email' => 'Email', + 'lang' => 'Language', 'api_token' => 'API Token', 'registered_at' => 'Registered at', diff --git a/resources/lang/id/lang.php b/resources/lang/id/lang.php new file mode 100644 index 0000000..09c616c --- /dev/null +++ b/resources/lang/id/lang.php @@ -0,0 +1,7 @@ + 'Bahasa', + 'en' => 'Bahasa Inggris', + 'id' => 'Bahasa Indonesia', +]; diff --git a/resources/views/reports/current-credits.blade.php b/resources/views/reports/current-credits.blade.php index 19dc528..520a688 100644 --- a/resources/views/reports/current-credits.blade.php +++ b/resources/views/reports/current-credits.blade.php @@ -1,6 +1,6 @@ @extends('layouts.app') -@section('title', 'Piutang Saat Ini') +@section('title', trans('dashboard.receiveable_earnings')) @section('content')