Skip to content

Commit 0beab10

Browse files
Add localeScope and add translation package
1 parent 691e489 commit 0beab10

File tree

11 files changed

+498
-36
lines changed

11 files changed

+498
-36
lines changed

app/Http/Middleware/LocaleMiddleware.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public function handle(Request $request, Closure $next): Response
1515
{
1616
$browserLocale = explode('_', (string) $request->getPreferredLanguage())[0];
1717
$currentLocale = app()->getLocale();
18-
$activeLocale = session()->get('locale');
18+
$activeLocale = session()->get('locale_lang');
1919
$supportedLocales = config('lcm.supported_locales');
2020

2121
if (Auth::check()) {
@@ -32,7 +32,6 @@ public function handle(Request $request, Closure $next): Response
3232
}
3333
}
3434

35-
3635
return $next($request);
3736
}
3837
}

app/Livewire/Components/ChangeLocale.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public function changeLocale(): void
2929

3030
$this->currentLocale = $locale;
3131
app()->setLocale($locale);
32-
session()->put('locale', $locale);
32+
session()->put('locale_lang', $locale);
3333

3434
Pluralizer::useLanguage($this->currentLocale === 'fr' ? 'french' : 'english');
3535

app/Models/Article.php

+3
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66

77
use App\Contracts\ReactableInterface;
88
use App\Models\Builders\ArticleQueryBuilder;
9+
use App\Models\Scopes\LocaleScope;
910
use App\Traits\HasAuthor;
1011
use App\Traits\HasSlug;
1112
use App\Traits\HasTags;
1213
use App\Traits\Reactable;
1314
use App\Traits\RecordsActivity;
1415
use CyrildeWit\EloquentViewable\Contracts\Viewable;
1516
use CyrildeWit\EloquentViewable\InteractsWithViews;
17+
use Illuminate\Database\Eloquent\Attributes\ScopedBy;
1618
use Illuminate\Database\Eloquent\Factories\HasFactory;
1719
use Illuminate\Database\Eloquent\Model;
1820
use Illuminate\Support\Str;
@@ -40,6 +42,7 @@
4042
* @property \Illuminate\Support\Carbon $created_at
4143
* @property \Illuminate\Support\Carbon $updated_at
4244
*/
45+
#[ScopedBy([LocaleScope::class])]
4346
final class Article extends Model implements HasMedia, ReactableInterface, Viewable
4447
{
4548
use HasAuthor;

app/Models/Discussion.php

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use App\Contracts\SpamReportableContract;
1010
use App\Contracts\SubscribeInterface;
1111
use App\Models\Builders\DiscussionQueryBuilder;
12+
use App\Models\Scopes\LocaleScope;
1213
use App\Traits\HasAuthor;
1314
use App\Traits\HasReplies;
1415
use App\Traits\HasSlug;
@@ -20,6 +21,7 @@
2021
use Carbon\Carbon;
2122
use CyrildeWit\EloquentViewable\Contracts\Viewable;
2223
use CyrildeWit\EloquentViewable\InteractsWithViews;
24+
use Illuminate\Database\Eloquent\Attributes\ScopedBy;
2325
use Illuminate\Database\Eloquent\Casts\Attribute;
2426
use Illuminate\Database\Eloquent\Factories\HasFactory;
2527
use Illuminate\Database\Eloquent\Model;
@@ -40,6 +42,7 @@
4042
* @property User $user
4143
* @property Collection | SpamReport[] $spamReports
4244
*/
45+
#[ScopedBy([LocaleScope::class])]
4346
final class Discussion extends Model implements ReactableInterface, ReplyInterface, SpamReportableContract, SubscribeInterface, Viewable
4447
{
4548
use HasAuthor;

app/Models/Scopes/LocaleScope.php

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Models\Scopes;
6+
7+
use Illuminate\Database\Eloquent\Builder;
8+
use Illuminate\Database\Eloquent\Model;
9+
use Illuminate\Database\Eloquent\Scope;
10+
11+
final class LocaleScope implements Scope
12+
{
13+
public function apply(Builder $builder, Model $model): void
14+
{
15+
$builder->where('locale', app()->getLocale());
16+
}
17+
}

app/Models/Thread.php

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use App\Contracts\SubscribeInterface;
1111
use App\Exceptions\CouldNotMarkReplyAsSolution;
1212
use App\Filters\Thread\ThreadFilters;
13+
use App\Models\Scopes\LocaleScope;
1314
use App\Traits\HasAuthor;
1415
use App\Traits\HasReplies;
1516
use App\Traits\HasSlug;
@@ -21,6 +22,7 @@
2122
use CyrildeWit\EloquentViewable\Contracts\Viewable;
2223
use CyrildeWit\EloquentViewable\InteractsWithViews;
2324
use Exception;
25+
use Illuminate\Database\Eloquent\Attributes\ScopedBy;
2426
use Illuminate\Database\Eloquent\Builder;
2527
use Illuminate\Database\Eloquent\Factories\HasFactory;
2628
use Illuminate\Database\Eloquent\Model;
@@ -51,6 +53,7 @@
5153
* @property Reply | null $solutionReply
5254
* @property \Illuminate\Database\Eloquent\Collection | Channel[] $channels
5355
*/
56+
#[ScopedBy([LocaleScope::class])]
5457
final class Thread extends Model implements Feedable, ReactableInterface, ReplyInterface, SpamReportableContract, SubscribeInterface, Viewable
5558
{
5659
use HasAuthor;

bootstrap/app.php

+5
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
$middleware->alias([
1818
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
1919
'checkIfBanned' => \App\Http\Middleware\CheckIfBanned::class,
20+
'localize' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRoutes::class,
21+
'localizationRedirect' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter::class,
22+
'localeSessionRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect::class,
23+
'localeCookieRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleCookieRedirect::class,
24+
'localeViewPath' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationViewPath::class,
2025
]);
2126
$middleware->web(append: [
2227
LocaleMiddleware::class,

composer.json

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"laravelcm/livewire-slide-overs": "^1.0",
3232
"livewire/livewire": "^3.5",
3333
"livewire/volt": "^1.6",
34+
"mcamara/laravel-localization": "^2.2",
3435
"mckenziearts/blade-untitledui-icons": "^1.3",
3536
"notchpay/notchpay-php": "^1.6",
3637
"qcod/laravel-gamify": "1.0.8",

composer.lock

+77-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)