From 7b38c511ce522c8cefc3b68a4aa3605df3f42928 Mon Sep 17 00:00:00 2001 From: bayu Date: Wed, 31 Dec 2025 13:49:49 +0700 Subject: [PATCH] init language --- app/Http/Controllers/LocaleController.php | 30 +++++++++++++ app/Http/Middleware/SetLocale.php | 43 +++++++++++++++++++ bootstrap/app.php | 4 +- lang/en/languages.php | 2 +- lang/en/new_arrivals.php | 6 +++ lang/en/weeks_highlights.php | 9 ++++ lang/id/languages.php | 2 +- lang/id/new_arrivals.php | 6 +++ lang/id/weeks_highlights.php | 9 ++++ .../components/home/new-arrivals.blade.php | 8 ++-- .../home/product-highlight.blade.php | 10 ++--- .../language-selector-sidebar.blade.php | 34 +++++++++++++-- .../components/language-selector.blade.php | 32 ++++++++++++-- .../layouts/partials/title-meta.blade.php | 4 +- routes/web.php | 6 ++- 15 files changed, 182 insertions(+), 23 deletions(-) create mode 100644 app/Http/Controllers/LocaleController.php create mode 100644 app/Http/Middleware/SetLocale.php create mode 100644 lang/en/new_arrivals.php create mode 100644 lang/en/weeks_highlights.php create mode 100644 lang/id/new_arrivals.php create mode 100644 lang/id/weeks_highlights.php diff --git a/app/Http/Controllers/LocaleController.php b/app/Http/Controllers/LocaleController.php new file mode 100644 index 0000000..d726716 --- /dev/null +++ b/app/Http/Controllers/LocaleController.php @@ -0,0 +1,30 @@ +input('locale'); + + // Validate locale + if (in_array($locale, ['en', 'id'])) { + App::setLocale($locale); + Session::put('locale', $locale); + } + + return response()->json(['success' => true]); + } +} diff --git a/app/Http/Middleware/SetLocale.php b/app/Http/Middleware/SetLocale.php new file mode 100644 index 0000000..e442027 --- /dev/null +++ b/app/Http/Middleware/SetLocale.php @@ -0,0 +1,43 @@ +has('locale')) { + $locale = $request->get('locale'); + + // Validate locale + if (in_array($locale, ['en', 'id'])) { + App::setLocale($locale); + Session::put('locale', $locale); + } + } + + // Check if locale is in session + elseif (Session::has('locale')) { + $locale = Session::get('locale'); + + if (in_array($locale, ['en', 'id'])) { + App::setLocale($locale); + } + } + + return $next($request); + } +} diff --git a/bootstrap/app.php b/bootstrap/app.php index c183276..ca1d20c 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -11,7 +11,9 @@ return Application::configure(basePath: dirname(__DIR__)) health: '/up', ) ->withMiddleware(function (Middleware $middleware): void { - // + $middleware->web(append: [ + \App\Http\Middleware\SetLocale::class, + ]); }) ->withExceptions(function (Exceptions $exceptions): void { // diff --git a/lang/en/languages.php b/lang/en/languages.php index 6d7cf51..5cc8fa4 100644 --- a/lang/en/languages.php +++ b/lang/en/languages.php @@ -3,6 +3,6 @@ return [ 'id' => 'Indonesia', - 'en' => 'English' + 'en' => 'English', ]; diff --git a/lang/en/new_arrivals.php b/lang/en/new_arrivals.php new file mode 100644 index 0000000..f74cde3 --- /dev/null +++ b/lang/en/new_arrivals.php @@ -0,0 +1,6 @@ + 'New Arrivals', + 'meet_the_collection' => 'Meet the :app collection' +]; diff --git a/lang/en/weeks_highlights.php b/lang/en/weeks_highlights.php new file mode 100644 index 0000000..401949c --- /dev/null +++ b/lang/en/weeks_highlights.php @@ -0,0 +1,9 @@ + 'This week\'s highlights', + 'best_sellers' => 'Best sellers', + 'new_arrivals' => 'New arrivals', + 'sale_items' => 'Sale items', + 'top_rated' => 'Top rated' +]; diff --git a/lang/id/languages.php b/lang/id/languages.php index 6d7cf51..5cc8fa4 100644 --- a/lang/id/languages.php +++ b/lang/id/languages.php @@ -3,6 +3,6 @@ return [ 'id' => 'Indonesia', - 'en' => 'English' + 'en' => 'English', ]; diff --git a/lang/id/new_arrivals.php b/lang/id/new_arrivals.php new file mode 100644 index 0000000..ec0b652 --- /dev/null +++ b/lang/id/new_arrivals.php @@ -0,0 +1,6 @@ + 'Kedatangan Baru', + 'meet_the_collection' => 'Temukan koleksi :app' +]; diff --git a/lang/id/weeks_highlights.php b/lang/id/weeks_highlights.php new file mode 100644 index 0000000..cd0130e --- /dev/null +++ b/lang/id/weeks_highlights.php @@ -0,0 +1,9 @@ + 'Highlight minggu ini', + 'best_sellers' => 'Terlaris', + 'new_arrivals' => 'Kedatangan baru', + 'sale_items' => 'Item diskon', + 'top_rated' => 'Peringkat tertinggi' +]; diff --git a/resources/views/components/home/new-arrivals.blade.php b/resources/views/components/home/new-arrivals.blade.php index 690f077..256ef6b 100644 --- a/resources/views/components/home/new-arrivals.blade.php +++ b/resources/views/components/home/new-arrivals.blade.php @@ -1,8 +1,8 @@
-

New arrivals

-

Meet the {{ config('app.name') }} collection

+

{{ __('new_arrivals.new_arrivals') }}

+

{{ __('new_arrivals.meet_the_collection', ['app' => config('app.name')]) }}

@@ -34,8 +34,8 @@
-

New arrivals

-

Meet the Cartzilla collection

+

{{ __('new_arrivals.new_arrivals') }}

+

{{ __('new_arrivals.meet_the_collection', ['app' => config('app.name')]) }}

diff --git a/resources/views/components/home/product-highlight.blade.php b/resources/views/components/home/product-highlight.blade.php index 85aca1b..64d65c0 100644 --- a/resources/views/components/home/product-highlight.blade.php +++ b/resources/views/components/home/product-highlight.blade.php @@ -1,21 +1,21 @@
-

This week's highlights

+

{{ __('weeks_highlights.this_weeks_highlights') }}

diff --git a/resources/views/components/language-selector-sidebar.blade.php b/resources/views/components/language-selector-sidebar.blade.php index f5c0261..1b05458 100644 --- a/resources/views/components/language-selector-sidebar.blade.php +++ b/resources/views/components/language-selector-sidebar.blade.php @@ -1,22 +1,48 @@ + + diff --git a/resources/views/components/language-selector.blade.php b/resources/views/components/language-selector.blade.php index 1900b41..315003e 100644 --- a/resources/views/components/language-selector.blade.php +++ b/resources/views/components/language-selector.blade.php @@ -1,20 +1,20 @@ + + diff --git a/resources/views/layouts/partials/title-meta.blade.php b/resources/views/layouts/partials/title-meta.blade.php index 6c43dcc..97367ae 100644 --- a/resources/views/layouts/partials/title-meta.blade.php +++ b/resources/views/layouts/partials/title-meta.blade.php @@ -17,5 +17,5 @@ - - + + diff --git a/routes/web.php b/routes/web.php index 1ff8f59..a3f3aff 100644 --- a/routes/web.php +++ b/routes/web.php @@ -4,6 +4,7 @@ use App\Http\Controllers\HomeController; use Illuminate\Support\Facades\Route; use App\Http\Controllers\RoutingController; use App\Http\Controllers\LocationController; +use App\Http\Controllers\LocaleController; Route::group(['prefix' => '/dummy'], function () { Route::get('', [RoutingController::class, 'index'])->name('root'); @@ -16,4 +17,7 @@ Route::group(['prefix' => '/dummy'], function () { // Location selection route Route::post('/location/select', [LocationController::class, 'select'])->name('location.select'); -Route::get('/', [HomeController::class, 'index'])->name('home'); \ No newline at end of file +// Language switching route +Route::post('/locale/switch', [LocaleController::class, 'switch'])->name('locale.switch'); + +Route::get('/', [HomeController::class, 'index'])->name('home');