From 8cdbbaa00e1daecdcadab4d46f74ababbf2f9439 Mon Sep 17 00:00:00 2001
From: Chri$
Date: Tue, 3 Dec 2024 02:01:09 +0100
Subject: [PATCH 01/15] Add local columns in tables and add middleware to check
and set app language
---
app/Http/Middleware/LocaleLangMiddleware.php | 33 ++++++++++++++
bootstrap/app.php | 3 ++
...to_articles_discussions_threads_tables.php | 44 +++++++++++++++++++
3 files changed, 80 insertions(+)
create mode 100644 app/Http/Middleware/LocaleLangMiddleware.php
create mode 100644 database/migrations/2024_12_03_004238_add_locale_to_articles_discussions_threads_tables.php
diff --git a/app/Http/Middleware/LocaleLangMiddleware.php b/app/Http/Middleware/LocaleLangMiddleware.php
new file mode 100644
index 00000000..67acc718
--- /dev/null
+++ b/app/Http/Middleware/LocaleLangMiddleware.php
@@ -0,0 +1,33 @@
+has('locale')) {
+ $navigatorLang = $request->server('HTTP_ACCEPT_LANGUAGE');
+ $navigatorLang = (is_string($navigatorLang) && strlen($navigatorLang) >= 2) ? $navigatorLang : '';
+ $navigatorLang = substr($navigatorLang, 0, 2);
+ $lang = in_array($navigatorLang, ['fr', 'en']) ? $navigatorLang : 'fr';
+ $request->session()->put('locale', $lang);
+ }
+ app()->setLocale(session()->get('locale'));
+
+ return $next($request);
+ }
+}
diff --git a/bootstrap/app.php b/bootstrap/app.php
index 9b8a54b2..7269dc1f 100644
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -2,6 +2,7 @@
declare(strict_types=1);
+use App\Http\Middleware\LocaleLangMiddleware;
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
@@ -17,6 +18,8 @@
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
'checkIfBanned' => \App\Http\Middleware\CheckIfBanned::class,
]);
+ $middleware->append(\Illuminate\Session\Middleware\StartSession::class);
+ $middleware->append(LocaleLangMiddleware::class);
})
->withExceptions(function (Exceptions $exceptions): void {
//
diff --git a/database/migrations/2024_12_03_004238_add_locale_to_articles_discussions_threads_tables.php b/database/migrations/2024_12_03_004238_add_locale_to_articles_discussions_threads_tables.php
new file mode 100644
index 00000000..38ab3418
--- /dev/null
+++ b/database/migrations/2024_12_03_004238_add_locale_to_articles_discussions_threads_tables.php
@@ -0,0 +1,44 @@
+string('locale')->default('fr')->after('slug');
+ });
+
+ Schema::table('discussions', function (Blueprint $table): void {
+ $table->string('locale')->default('fr')->after('body');
+ });
+
+ Schema::table('threads', function (Blueprint $table): void {
+ $table->string('locale')->default('fr')->after('body');
+ });
+ });
+ }
+
+ public function down(): void
+ {
+ Schema::table('articles_discussions_threads_tables', function (Blueprint $table): void {
+ Schema::table('articles', function (Blueprint $table): void {
+ $table->dropColumn('locale');
+ });
+
+ Schema::table('discussions', function (Blueprint $table): void {
+ $table->dropColumn('locale');
+ });
+
+ Schema::table('threads', function (Blueprint $table): void {
+ $table->dropColumn('locale');
+ });
+ });
+ }
+};
From ea470efc79ba224fa4e40d229f8e5d7f2436caad Mon Sep 17 00:00:00 2001
From: Chri$
Date: Tue, 3 Dec 2024 16:33:28 +0100
Subject: [PATCH 02/15] add lang flag and update middleware with livewire
class
---
.env.example | 1 +
app/Http/Middleware/LocaleLangMiddleware.php | 33 --------------
app/Http/Middleware/LocaleMiddleware.php | 42 ++++++++++++++++++
app/Livewire/Components/Locale.php | 39 ++++++++++++++++
bootstrap/app.php | 8 ++--
config/lcm.php | 5 +++
..._03_004238_add_locale_column_to_tables.php | 36 +++++++++++++++
...to_articles_discussions_threads_tables.php | 44 -------------------
.../views/components/layouts/footer.blade.php | 1 +
.../livewire/components/locale.blade.php | 22 ++++++++++
10 files changed, 151 insertions(+), 80 deletions(-)
delete mode 100644 app/Http/Middleware/LocaleLangMiddleware.php
create mode 100644 app/Http/Middleware/LocaleMiddleware.php
create mode 100644 app/Livewire/Components/Locale.php
create mode 100644 database/migrations/2024_12_03_004238_add_locale_column_to_tables.php
delete mode 100644 database/migrations/2024_12_03_004238_add_locale_to_articles_discussions_threads_tables.php
create mode 100644 resources/views/livewire/components/locale.blade.php
diff --git a/.env.example b/.env.example
index fd6377df..074ba148 100644
--- a/.env.example
+++ b/.env.example
@@ -3,6 +3,7 @@ APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://laravel.cm.test
+APP_LOCALE=fr
FILAMENT_PATH=cp
LOG_CHANNEL=stack
diff --git a/app/Http/Middleware/LocaleLangMiddleware.php b/app/Http/Middleware/LocaleLangMiddleware.php
deleted file mode 100644
index 67acc718..00000000
--- a/app/Http/Middleware/LocaleLangMiddleware.php
+++ /dev/null
@@ -1,33 +0,0 @@
-has('locale')) {
- $navigatorLang = $request->server('HTTP_ACCEPT_LANGUAGE');
- $navigatorLang = (is_string($navigatorLang) && strlen($navigatorLang) >= 2) ? $navigatorLang : '';
- $navigatorLang = substr($navigatorLang, 0, 2);
- $lang = in_array($navigatorLang, ['fr', 'en']) ? $navigatorLang : 'fr';
- $request->session()->put('locale', $lang);
- }
- app()->setLocale(session()->get('locale'));
-
- return $next($request);
- }
-}
diff --git a/app/Http/Middleware/LocaleMiddleware.php b/app/Http/Middleware/LocaleMiddleware.php
new file mode 100644
index 00000000..c3c5f0f4
--- /dev/null
+++ b/app/Http/Middleware/LocaleMiddleware.php
@@ -0,0 +1,42 @@
+server('HTTP_ACCEPT_LANGUAGE'))) {
+ $navigatorLang = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2);
+ if (in_array($navigatorLang, $supportLang)) {
+ $lang = $navigatorLang;
+ }
+ }
+ }
+ if (! is_null($user)) {
+ if (isset($user->settings['default_lang']) && $user->settings['default_lang'] != $lang) {
+ $lang = $user->settings['default_lang'];
+ }
+ }
+ app()->setLocale($lang);
+
+ return $next($request);
+ }
+}
diff --git a/app/Livewire/Components/Locale.php b/app/Livewire/Components/Locale.php
new file mode 100644
index 00000000..2b30081a
--- /dev/null
+++ b/app/Livewire/Components/Locale.php
@@ -0,0 +1,39 @@
+selectedLang = app()->getLocale();
+ }
+
+ public function changeLang(string $lang): RedirectResponse|Redirector
+ {
+ $user = Auth::user();
+ if ($user) {
+ $settings = $user->settings;
+ $settings['default_lang'] = $lang;
+ $user->settings = $settings;
+ $user->save();
+ }
+ app()->setLocale($lang);
+ return redirect()->to(url()->current());
+ }
+
+ public function render(): View
+ {
+ return view('livewire.components.locale');
+ }
+}
diff --git a/bootstrap/app.php b/bootstrap/app.php
index 7269dc1f..2121f2c5 100644
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-use App\Http\Middleware\LocaleLangMiddleware;
+use App\Http\Middleware\LocaleMiddleware;
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
@@ -18,8 +18,10 @@
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
'checkIfBanned' => \App\Http\Middleware\CheckIfBanned::class,
]);
- $middleware->append(\Illuminate\Session\Middleware\StartSession::class);
- $middleware->append(LocaleLangMiddleware::class);
+ $middleware->appendToGroup('web', [
+ LocaleMiddleware::class,
+ \Illuminate\Session\Middleware\StartSession::class,
+ ]);
})
->withExceptions(function (Exceptions $exceptions): void {
//
diff --git a/config/lcm.php b/config/lcm.php
index eda80e6c..78b84eea 100644
--- a/config/lcm.php
+++ b/config/lcm.php
@@ -26,6 +26,11 @@
'web_hook' => env('SLACK_WEBHOOK_URL', ''),
],
+ 'lang' => [
+ 'app_local' => env('APP_LOCALE', 'fr'),
+ 'support_local' => ['fr', 'en'],
+ ],
+
'spa_url' => env('FRONTEND_APP_URL', 'http://localhost:4200'),
'notch-pay-public-token' => env('NOTCHPAY_PUBLIC_KEY', null),
diff --git a/database/migrations/2024_12_03_004238_add_locale_column_to_tables.php b/database/migrations/2024_12_03_004238_add_locale_column_to_tables.php
new file mode 100644
index 00000000..4f2ce21f
--- /dev/null
+++ b/database/migrations/2024_12_03_004238_add_locale_column_to_tables.php
@@ -0,0 +1,36 @@
+string('locale')->default('fr')->after('slug');
+ });
+
+ Schema::table('discussions', function (Blueprint $table): void {
+ $table->string('locale')->default('fr')->after('body');
+ });
+
+ Schema::table('threads', function (Blueprint $table): void {
+ $table->string('locale')->default('fr')->after('body');
+ });
+ }
+
+ public function down(): void
+ {
+ foreach ($this->tables as $tab) {
+ Schema::table($tab, function (Blueprint $table): void {
+ $table->dropColumn('locale');
+ });
+ }
+ }
+};
diff --git a/database/migrations/2024_12_03_004238_add_locale_to_articles_discussions_threads_tables.php b/database/migrations/2024_12_03_004238_add_locale_to_articles_discussions_threads_tables.php
deleted file mode 100644
index 38ab3418..00000000
--- a/database/migrations/2024_12_03_004238_add_locale_to_articles_discussions_threads_tables.php
+++ /dev/null
@@ -1,44 +0,0 @@
-string('locale')->default('fr')->after('slug');
- });
-
- Schema::table('discussions', function (Blueprint $table): void {
- $table->string('locale')->default('fr')->after('body');
- });
-
- Schema::table('threads', function (Blueprint $table): void {
- $table->string('locale')->default('fr')->after('body');
- });
- });
- }
-
- public function down(): void
- {
- Schema::table('articles_discussions_threads_tables', function (Blueprint $table): void {
- Schema::table('articles', function (Blueprint $table): void {
- $table->dropColumn('locale');
- });
-
- Schema::table('discussions', function (Blueprint $table): void {
- $table->dropColumn('locale');
- });
-
- Schema::table('threads', function (Blueprint $table): void {
- $table->dropColumn('locale');
- });
- });
- }
-};
diff --git a/resources/views/components/layouts/footer.blade.php b/resources/views/components/layouts/footer.blade.php
index c8022351..f3bf9cfb 100644
--- a/resources/views/components/layouts/footer.blade.php
+++ b/resources/views/components/layouts/footer.blade.php
@@ -99,6 +99,7 @@ class="ml-2 size-6 rounded-full"
+
diff --git a/resources/views/livewire/components/locale.blade.php b/resources/views/livewire/components/locale.blade.php
new file mode 100644
index 00000000..9f0f8dde
--- /dev/null
+++ b/resources/views/livewire/components/locale.blade.php
@@ -0,0 +1,22 @@
+
+
+ @if($selectedLang == 'fr')
+
+ @else
+
+ @endif
+
From 3ae3b4aac641e33fa10605c92a8e7adcb3a73db5 Mon Sep 17 00:00:00 2001
From: Chri$
Date: Tue, 3 Dec 2024 22:26:29 +0100
Subject: [PATCH 03/15] Apply lint
---
app/Livewire/Components/Locale.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/Livewire/Components/Locale.php b/app/Livewire/Components/Locale.php
index 2b30081a..b96c6f02 100644
--- a/app/Livewire/Components/Locale.php
+++ b/app/Livewire/Components/Locale.php
@@ -29,6 +29,7 @@ public function changeLang(string $lang): RedirectResponse|Redirector
$user->save();
}
app()->setLocale($lang);
+
return redirect()->to(url()->current());
}
From e49ffe3baa7a46befee2407922f50a531c3b6be9 Mon Sep 17 00:00:00 2001
From: Chri$
Date: Wed, 4 Dec 2024 10:30:40 +0100
Subject: [PATCH 04/15] change redirection to reload event ,deleted
startsession middleware in app , ...etc
---
app/Http/Middleware/LocaleMiddleware.php | 14 +++++++++----
.../{Locale.php => ChangeLocale.php} | 15 +++++++------
bootstrap/app.php | 3 +--
config/lcm.php | 7 +++----
..._03_004238_add_locale_column_to_tables.php | 21 +++++++------------
.../views/components/layouts/footer.blade.php | 2 +-
...cale.blade.php => change-locale.blade.php} | 6 +++++-
7 files changed, 34 insertions(+), 34 deletions(-)
rename app/Livewire/Components/{Locale.php => ChangeLocale.php} (61%)
rename resources/views/livewire/components/{locale.blade.php => change-locale.blade.php} (87%)
diff --git a/app/Http/Middleware/LocaleMiddleware.php b/app/Http/Middleware/LocaleMiddleware.php
index c3c5f0f4..d4592c49 100644
--- a/app/Http/Middleware/LocaleMiddleware.php
+++ b/app/Http/Middleware/LocaleMiddleware.php
@@ -20,21 +20,27 @@ final class LocaleMiddleware
public function handle(Request $request, Closure $next): Response
{
$user = Auth::user();
- $lang = config('lcm.lang.app_local');
- $supportLang = config('lcm.lang.support_local');
+ $lang = config('lcm.app_locale');
+ $supportLang = config('lcm.supported_locales');
+
if (! Auth::check()) {
+
if (! is_null($request->server('HTTP_ACCEPT_LANGUAGE'))) {
$navigatorLang = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2);
+
if (in_array($navigatorLang, $supportLang)) {
$lang = $navigatorLang;
}
}
}
+
if (! is_null($user)) {
- if (isset($user->settings['default_lang']) && $user->settings['default_lang'] != $lang) {
- $lang = $user->settings['default_lang'];
+
+ if (isset($user->settings['locale']) && $user->settings['locale'] != $lang) {
+ $lang = $user->settings['locale'];
}
}
+
app()->setLocale($lang);
return $next($request);
diff --git a/app/Livewire/Components/Locale.php b/app/Livewire/Components/ChangeLocale.php
similarity index 61%
rename from app/Livewire/Components/Locale.php
rename to app/Livewire/Components/ChangeLocale.php
index b96c6f02..ec6f462c 100644
--- a/app/Livewire/Components/Locale.php
+++ b/app/Livewire/Components/ChangeLocale.php
@@ -5,12 +5,10 @@
namespace App\Livewire\Components;
use Illuminate\Contracts\View\View;
-use Illuminate\Routing\Redirector;
use Illuminate\Support\Facades\Auth;
use Livewire\Component;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-final class Locale extends Component
+final class ChangeLocale extends Component
{
public string $selectedLang;
@@ -19,22 +17,23 @@ public function mount(): void
$this->selectedLang = app()->getLocale();
}
- public function changeLang(string $lang): RedirectResponse|Redirector
+ public function changeLang(string $lang): void
{
$user = Auth::user();
+
if ($user) {
$settings = $user->settings;
- $settings['default_lang'] = $lang;
+ $settings['locale'] = $lang;
$user->settings = $settings;
$user->save();
}
- app()->setLocale($lang);
- return redirect()->to(url()->current());
+ app()->setLocale($lang);
+ $this->dispatch('localeChanged');
}
public function render(): View
{
- return view('livewire.components.locale');
+ return view('livewire.components.change-locale');
}
}
diff --git a/bootstrap/app.php b/bootstrap/app.php
index 2121f2c5..3f6d2e38 100644
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -18,9 +18,8 @@
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
'checkIfBanned' => \App\Http\Middleware\CheckIfBanned::class,
]);
- $middleware->appendToGroup('web', [
+ $middleware->web(append: [
LocaleMiddleware::class,
- \Illuminate\Session\Middleware\StartSession::class,
]);
})
->withExceptions(function (Exceptions $exceptions): void {
diff --git a/config/lcm.php b/config/lcm.php
index 78b84eea..652afc29 100644
--- a/config/lcm.php
+++ b/config/lcm.php
@@ -26,10 +26,9 @@
'web_hook' => env('SLACK_WEBHOOK_URL', ''),
],
- 'lang' => [
- 'app_local' => env('APP_LOCALE', 'fr'),
- 'support_local' => ['fr', 'en'],
- ],
+ 'app_locale' => env('APP_LOCALE', 'fr'),
+
+ 'supported_locales' => ['fr', 'en'],
'spa_url' => env('FRONTEND_APP_URL', 'http://localhost:4200'),
diff --git a/database/migrations/2024_12_03_004238_add_locale_column_to_tables.php b/database/migrations/2024_12_03_004238_add_locale_column_to_tables.php
index 4f2ce21f..44cc778a 100644
--- a/database/migrations/2024_12_03_004238_add_locale_column_to_tables.php
+++ b/database/migrations/2024_12_03_004238_add_locale_column_to_tables.php
@@ -8,26 +8,19 @@
return new class extends Migration
{
- private array $tables = ['articles', 'discussions', 'threads'];
-
public function up(): void
{
- Schema::table('articles', function (Blueprint $table): void {
- $table->string('locale')->default('fr')->after('slug');
- });
-
- Schema::table('discussions', function (Blueprint $table): void {
- $table->string('locale')->default('fr')->after('body');
- });
-
- Schema::table('threads', function (Blueprint $table): void {
- $table->string('locale')->default('fr')->after('body');
- });
+ foreach (['articles', 'discussions', 'threads'] as $key => $value) {
+ $afterColumn = ($key == 0) ? 'slug' : 'body';
+ Schema::table($value, function (Blueprint $table) use ($afterColumn): void {
+ $table->string('locale')->default('fr')->after($afterColumn);
+ });
+ }
}
public function down(): void
{
- foreach ($this->tables as $tab) {
+ foreach (['articles', 'discussions', 'threads'] as $tab) {
Schema::table($tab, function (Blueprint $table): void {
$table->dropColumn('locale');
});
diff --git a/resources/views/components/layouts/footer.blade.php b/resources/views/components/layouts/footer.blade.php
index f3bf9cfb..79a44ae4 100644
--- a/resources/views/components/layouts/footer.blade.php
+++ b/resources/views/components/layouts/footer.blade.php
@@ -99,7 +99,7 @@ class="ml-2 size-6 rounded-full"
-
+
diff --git a/resources/views/livewire/components/locale.blade.php b/resources/views/livewire/components/change-locale.blade.php
similarity index 87%
rename from resources/views/livewire/components/locale.blade.php
rename to resources/views/livewire/components/change-locale.blade.php
index 9f0f8dde..fe06b644 100644
--- a/resources/views/livewire/components/locale.blade.php
+++ b/resources/views/livewire/components/change-locale.blade.php
@@ -1,4 +1,8 @@
-
+
-
Vous n'avez pas de notifications non lues.
+
{{ __('pages/notification.empty') }}
-
Lancer un nouveau contenu ?
+
{{ __('pages/notification.new_content') }}
- Commencer par choisir quel type de contenu vous voulez créer.
+ {{ __('pages/notification.choose_content') }}
-
@@ -83,13 +83,13 @@ class="size-6 text-white"
- Partager un tutoriel ou une information importante.
+ {{ __('pages/notification.share_content') }}
@@ -131,11 +131,11 @@ class="size-6 text-white"
- Vous souhaitez apporter une pierre à l'édifice.
+ {{ __('pages/notification.start_discussion_description_text') }}
@@ -175,13 +175,13 @@ class="size-6 text-white"
- Vous avez un problème ? Trouvons ensemble une solution.
+ {{ __('pages/notification.ask_help_description') }}
From 63959b78e99b97b260d6c6c5ddd646fa3ec5c613 Mon Sep 17 00:00:00 2001
From: Chri$
Date: Tue, 3 Dec 2024 00:40:04 +0100
Subject: [PATCH 07/15] add space in End of array, change font to font-heading
---
lang/en/pages/notification.php | 1 +
lang/fr/pages/notification.php | 1 +
resources/views/livewire/notifications-page.blade.php | 4 ++--
3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/lang/en/pages/notification.php b/lang/en/pages/notification.php
index dc539810..90e6d25a 100644
--- a/lang/en/pages/notification.php
+++ b/lang/en/pages/notification.php
@@ -13,4 +13,5 @@
'start_discussion_description_text' => 'You\'d like to make a contribution.',
'ask_help' => 'Ask for help',
'ask_help_description' => 'Got a problem? Let\'s find a solution together.',
+
];
diff --git a/lang/fr/pages/notification.php b/lang/fr/pages/notification.php
index 11d902ea..dc72deaf 100644
--- a/lang/fr/pages/notification.php
+++ b/lang/fr/pages/notification.php
@@ -13,4 +13,5 @@
'start_discussion_description_text' => 'Vous souhaitez apporter une pierre à l\'édifice.',
'ask_help' => 'Demander de l\'aide',
'ask_help_description' => ' Vous avez un problème ? Trouvons ensemble une solution.',
+
];
diff --git a/resources/views/livewire/notifications-page.blade.php b/resources/views/livewire/notifications-page.blade.php
index 7d2827fc..0b0c95eb 100644
--- a/resources/views/livewire/notifications-page.blade.php
+++ b/resources/views/livewire/notifications-page.blade.php
@@ -4,7 +4,7 @@
From 691e48980f8d0773bc61852c47b76742eaec7989 Mon Sep 17 00:00:00 2001
From: Arthur Monney
Date: Thu, 5 Dec 2024 22:48:07 +0100
Subject: [PATCH 11/15] feat: update local middleware and livewire component
---
app/Http/Middleware/LocaleMiddleware.php | 36 +++++++------------
app/Livewire/Components/ChangeLocale.php | 32 +++++++++++------
app/Models/User.php | 2 ++
app/Traits/HasSettings.php | 2 +-
config/lcm.php | 2 --
lang/en/pages/article.php | 2 +-
lang/en/pages/auth.php | 16 ++++-----
lang/fr/pages/article.php | 2 +-
lang/fr/pages/auth.php | 8 ++---
.../views/components/layouts/footer.blade.php | 30 ++++++++--------
.../components/change-locale.blade.php | 20 +++++------
11 files changed, 73 insertions(+), 79 deletions(-)
diff --git a/app/Http/Middleware/LocaleMiddleware.php b/app/Http/Middleware/LocaleMiddleware.php
index 4f6f5f77..50272d5c 100644
--- a/app/Http/Middleware/LocaleMiddleware.php
+++ b/app/Http/Middleware/LocaleMiddleware.php
@@ -7,41 +7,31 @@
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
-use Psr\Container\ContainerExceptionInterface;
-use Psr\Container\NotFoundExceptionInterface;
use Symfony\Component\HttpFoundation\Response;
final class LocaleMiddleware
{
- /**
- * @throws ContainerExceptionInterface
- * @throws NotFoundExceptionInterface
- */
public function handle(Request $request, Closure $next): Response
{
- $user = Auth::user();
- $lang = config('lcm.app_locale');
- $supportLang = config('lcm.supported_locales');
+ $browserLocale = explode('_', (string) $request->getPreferredLanguage())[0];
+ $currentLocale = app()->getLocale();
+ $activeLocale = session()->get('locale');
+ $supportedLocales = config('lcm.supported_locales');
- if (! Auth::check()) {
+ if (Auth::check()) {
+ $userLocale = Auth::user()?->setting('locale', $currentLocale);
- if (! is_null($request->server('HTTP_ACCEPT_LANGUAGE'))) {
- $navigatorLang = substr((string) $request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2); // @phpstan-ignore-line
-
- if (in_array($navigatorLang, $supportLang)) {
- $lang = $navigatorLang;
- }
+ if ($userLocale && $userLocale !== $currentLocale) {
+ app()->setLocale($userLocale);
}
- }
-
- if (! is_null($user)) {
-
- if (isset($user->settings['locale']) && $user->settings['locale'] != $lang) {
- $lang = $user->settings['locale'];
+ } else {
+ if (! $activeLocale && in_array($browserLocale, $supportedLocales)) {
+ app()->setLocale($browserLocale);
+ } else {
+ app()->setLocale($activeLocale);
}
}
- app()->setLocale($lang);
return $next($request);
}
diff --git a/app/Livewire/Components/ChangeLocale.php b/app/Livewire/Components/ChangeLocale.php
index ec6f462c..4ce220d4 100644
--- a/app/Livewire/Components/ChangeLocale.php
+++ b/app/Livewire/Components/ChangeLocale.php
@@ -6,30 +6,40 @@
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Pluralizer;
+use Livewire\Attributes\Computed;
use Livewire\Component;
final class ChangeLocale extends Component
{
- public string $selectedLang;
+ public string $currentLocale;
public function mount(): void
{
- $this->selectedLang = app()->getLocale();
+ $this->currentLocale = app()->getLocale();
}
- public function changeLang(string $lang): void
+ public function changeLocale(): void
{
- $user = Auth::user();
+ $locale = $this->currentLocale === 'fr' ? 'en' : 'fr';
- if ($user) {
- $settings = $user->settings;
- $settings['locale'] = $lang;
- $user->settings = $settings;
- $user->save();
+ if (Auth::check()) {
+ Auth::user()?->settings(['locale' => $locale]);
}
- app()->setLocale($lang);
- $this->dispatch('localeChanged');
+ $this->currentLocale = $locale;
+ app()->setLocale($locale);
+ session()->put('locale', $locale);
+
+ Pluralizer::useLanguage($this->currentLocale === 'fr' ? 'french' : 'english');
+
+ $this->redirectRoute('home', navigate: true);
+ }
+
+ #[Computed]
+ public function locale(): string
+ {
+ return $this->currentLocale === 'fr' ? 'English' : 'Français';
}
public function render(): View
diff --git a/app/Models/User.php b/app/Models/User.php
index d2bffbb1..d88a0483 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -46,10 +46,12 @@
* @property string | null $bio
* @property string | null $website
* @property string | null $banned_reason
+ * @property array $settings
* @property Carbon | null $email_verified_at
* @property Carbon | null $last_login_at
* @property Carbon | null $banned_at
* @property Collection | Activity[] $activities
+ * @property-read Collection | SocialAccount[] $providers
*/
final class User extends Authenticatable implements FilamentUser, HasAvatar, HasMedia, HasName, MustVerifyEmail
{
diff --git a/app/Traits/HasSettings.php b/app/Traits/HasSettings.php
index 17a5cea1..445f1fb3 100644
--- a/app/Traits/HasSettings.php
+++ b/app/Traits/HasSettings.php
@@ -6,7 +6,7 @@
trait HasSettings
{
- public function setting(string $name, string $default): string
+ public function setting(string $name, string $default): mixed
{
if ($this->settings && array_key_exists($name, $this->settings)) {
return $this->settings[$name];
diff --git a/config/lcm.php b/config/lcm.php
index 652afc29..bc0c0c24 100644
--- a/config/lcm.php
+++ b/config/lcm.php
@@ -26,8 +26,6 @@
'web_hook' => env('SLACK_WEBHOOK_URL', ''),
],
- 'app_locale' => env('APP_LOCALE', 'fr'),
-
'supported_locales' => ['fr', 'en'],
'spa_url' => env('FRONTEND_APP_URL', 'http://localhost:4200'),
diff --git a/lang/en/pages/article.php b/lang/en/pages/article.php
index 044645cb..89fa22ca 100644
--- a/lang/en/pages/article.php
+++ b/lang/en/pages/article.php
@@ -5,7 +5,7 @@
return [
'title' => 'Laravel Cameroon Blog',
- 'blog' => 'Le Blog de Laravel Cameroun',
+ 'blog' => 'The Laravel Cameroon Blog',
'blog_summary' => 'All the latest articles, tips and tutorials published just for you.',
'about_author' => 'About author',
'next_article' => 'Next article',
diff --git a/lang/en/pages/auth.php b/lang/en/pages/auth.php
index acfc225a..31426b4b 100644
--- a/lang/en/pages/auth.php
+++ b/lang/en/pages/auth.php
@@ -23,15 +23,15 @@
'heading' => 'Open your mind and discover new horizons.',
'quote' => 'A lone developer is like an isolated node—limited in reach, influence, and growth. Just as software thrives on interconnected components, so do developers flourish in the collaborative ecosystem of a community.',
'quote_authors' => 'by Andrew Hunt and David Thomas',
+ 'podcast' => 'Podcast',
+ 'podcast_description' => 'Follow podcasts on different topics with freelancers, developers, entrepreneurs, etc.',
+ 'discussion' => 'Discussions',
+ 'discussion_description' => 'Take part in open discussions and debates with several other participants.',
+ 'snippet' => 'Snippets code',
+ 'snippet_description' => 'Share source code for different languages to help other developers.',
+ 'premium' => 'Premium',
+ 'premium_description' => 'Become premium, support the community and access private content and source code.',
],
- 'podcast' => 'Podcast',
- 'podcast_description' => 'Follow podcasts on different topics with freelancers, developers, entrepreneurs, etc.',
- 'discussion' => 'Discussions',
- 'discussion_description' => 'Take part in open discussions and debates with several other participants.',
- 'snippet' => 'Snippets code',
- 'snippet_description' => 'Share source code for different languages to help other developers.',
- 'premium' => 'Premium',
- 'premium_description' => 'Become premium, support the community and access private content and source code.',
],
'forgot' => [
diff --git a/lang/fr/pages/article.php b/lang/fr/pages/article.php
index 0780602d..f5fdfb13 100644
--- a/lang/fr/pages/article.php
+++ b/lang/fr/pages/article.php
@@ -5,7 +5,7 @@
return [
'title' => 'Blog Laravel Cameroun',
- 'blog' => 'The Laravel Cameroon Blog',
+ 'blog' => 'Le Blog de Laravel Cameroun',
'blog_summary' => 'Tous les articles, tips et tutoriels récemment publiés juste pour vous.',
'about_author' => 'À propos de l’auteur',
'next_article' => 'Article suivant',
diff --git a/lang/fr/pages/auth.php b/lang/fr/pages/auth.php
index 39b4bfdb..38128cd7 100644
--- a/lang/fr/pages/auth.php
+++ b/lang/fr/pages/auth.php
@@ -37,9 +37,7 @@
'forgot' => [
'page_title' => 'Mot de passe oublié',
'title' => 'Réinitialisation du mot de passe',
- 'description' => "Mot de passe oublié ? Aucun problème. Communiquez-nous simplement votre adresse e-mail et nous vous
- enverrons par e-mail un lien de réinitialisation de mot de passe qui vous permettra d'en choisir un
- nouveau.",
+ 'description' => "Mot de passe oublié ? Aucun problème. Communiquez-nous simplement votre adresse e-mail et nous vous enverrons par e-mail un lien de réinitialisation de mot de passe qui vous permettra d'en choisir un nouveau.",
],
'reset' => [
@@ -49,9 +47,7 @@
'verify' => [
'page_title' => "Vérification de l'adresse e-mail",
- 'description' => "Merci pour votre inscription ! Avant de commencer, pourriez-vous vérifier votre adresse e-mail en
- cliquant sur le lien que nous venons de vous envoyer par e-mail ? Si vous n'avez pas reçu l'e-mail, nous
- nous ferons un plaisir de vous en envoyer un autre.",
+ 'description' => "Merci pour votre inscription ! Avant de commencer, pourriez-vous vérifier votre adresse e-mail en cliquant sur le lien que nous venons de vous envoyer par e-mail ? Si vous n'avez pas reçu l'e-mail, nous nous ferons un plaisir de vous en envoyer un autre.",
'success' => "Un nouveau lien de vérification a été envoyé à l'adresse e-mail que vous avez fournie lors de l'inscription ou la modification de votre adresse.",
'submit' => "Renvoyer l'e-mail de vérification",
],
diff --git a/resources/views/components/layouts/footer.blade.php b/resources/views/components/layouts/footer.blade.php
index 0afb0069..ddfb6353 100644
--- a/resources/views/components/layouts/footer.blade.php
+++ b/resources/views/components/layouts/footer.blade.php
@@ -53,19 +53,22 @@ class="ml-2 size-6 rounded-full"
{{ __('global.joins_us.description') }}
-
-
-
- Discord
-
-
-
- Telegram
-
-
-
- WhatsApp
-
+
+
+
+
+ Discord
+
+
+
+ Telegram
+
+
+
+ WhatsApp
+
+
+
@@ -99,7 +102,6 @@ class="ml-2 size-6 rounded-full"
-
diff --git a/resources/views/livewire/components/change-locale.blade.php b/resources/views/livewire/components/change-locale.blade.php
index fe06b644..260a59f0 100644
--- a/resources/views/livewire/components/change-locale.blade.php
+++ b/resources/views/livewire/components/change-locale.blade.php
@@ -1,9 +1,9 @@
-
-
+ {{ $this->locale }}
+
From 0beab10eebfd697f5033f2c9b02ac0e304ee26ed Mon Sep 17 00:00:00 2001
From: Chri$
Date: Fri, 6 Dec 2024 18:31:32 +0100
Subject: [PATCH 12/15] Add localeScope and add translation package
---
app/Http/Middleware/LocaleMiddleware.php | 3 +-
app/Livewire/Components/ChangeLocale.php | 2 +-
app/Models/Article.php | 3 +
app/Models/Discussion.php | 3 +
app/Models/Scopes/LocaleScope.php | 17 ++
app/Models/Thread.php | 3 +
bootstrap/app.php | 5 +
composer.json | 1 +
composer.lock | 78 ++++-
config/laravellocalization.php | 352 +++++++++++++++++++++++
routes/web.php | 67 ++---
11 files changed, 498 insertions(+), 36 deletions(-)
create mode 100644 app/Models/Scopes/LocaleScope.php
create mode 100644 config/laravellocalization.php
diff --git a/app/Http/Middleware/LocaleMiddleware.php b/app/Http/Middleware/LocaleMiddleware.php
index 50272d5c..387ee97e 100644
--- a/app/Http/Middleware/LocaleMiddleware.php
+++ b/app/Http/Middleware/LocaleMiddleware.php
@@ -15,7 +15,7 @@ public function handle(Request $request, Closure $next): Response
{
$browserLocale = explode('_', (string) $request->getPreferredLanguage())[0];
$currentLocale = app()->getLocale();
- $activeLocale = session()->get('locale');
+ $activeLocale = session()->get('locale_lang');
$supportedLocales = config('lcm.supported_locales');
if (Auth::check()) {
@@ -32,7 +32,6 @@ public function handle(Request $request, Closure $next): Response
}
}
-
return $next($request);
}
}
diff --git a/app/Livewire/Components/ChangeLocale.php b/app/Livewire/Components/ChangeLocale.php
index 4ce220d4..48d5e8cd 100644
--- a/app/Livewire/Components/ChangeLocale.php
+++ b/app/Livewire/Components/ChangeLocale.php
@@ -29,7 +29,7 @@ public function changeLocale(): void
$this->currentLocale = $locale;
app()->setLocale($locale);
- session()->put('locale', $locale);
+ session()->put('locale_lang', $locale);
Pluralizer::useLanguage($this->currentLocale === 'fr' ? 'french' : 'english');
diff --git a/app/Models/Article.php b/app/Models/Article.php
index 2fa94065..f3a5fdb7 100644
--- a/app/Models/Article.php
+++ b/app/Models/Article.php
@@ -6,6 +6,7 @@
use App\Contracts\ReactableInterface;
use App\Models\Builders\ArticleQueryBuilder;
+use App\Models\Scopes\LocaleScope;
use App\Traits\HasAuthor;
use App\Traits\HasSlug;
use App\Traits\HasTags;
@@ -13,6 +14,7 @@
use App\Traits\RecordsActivity;
use CyrildeWit\EloquentViewable\Contracts\Viewable;
use CyrildeWit\EloquentViewable\InteractsWithViews;
+use Illuminate\Database\Eloquent\Attributes\ScopedBy;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
@@ -40,6 +42,7 @@
* @property \Illuminate\Support\Carbon $created_at
* @property \Illuminate\Support\Carbon $updated_at
*/
+#[ScopedBy([LocaleScope::class])]
final class Article extends Model implements HasMedia, ReactableInterface, Viewable
{
use HasAuthor;
diff --git a/app/Models/Discussion.php b/app/Models/Discussion.php
index a2fded4f..e9798ff4 100644
--- a/app/Models/Discussion.php
+++ b/app/Models/Discussion.php
@@ -9,6 +9,7 @@
use App\Contracts\SpamReportableContract;
use App\Contracts\SubscribeInterface;
use App\Models\Builders\DiscussionQueryBuilder;
+use App\Models\Scopes\LocaleScope;
use App\Traits\HasAuthor;
use App\Traits\HasReplies;
use App\Traits\HasSlug;
@@ -20,6 +21,7 @@
use Carbon\Carbon;
use CyrildeWit\EloquentViewable\Contracts\Viewable;
use CyrildeWit\EloquentViewable\InteractsWithViews;
+use Illuminate\Database\Eloquent\Attributes\ScopedBy;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
@@ -40,6 +42,7 @@
* @property User $user
* @property Collection | SpamReport[] $spamReports
*/
+#[ScopedBy([LocaleScope::class])]
final class Discussion extends Model implements ReactableInterface, ReplyInterface, SpamReportableContract, SubscribeInterface, Viewable
{
use HasAuthor;
diff --git a/app/Models/Scopes/LocaleScope.php b/app/Models/Scopes/LocaleScope.php
new file mode 100644
index 00000000..7a3851ff
--- /dev/null
+++ b/app/Models/Scopes/LocaleScope.php
@@ -0,0 +1,17 @@
+where('locale', app()->getLocale());
+ }
+}
diff --git a/app/Models/Thread.php b/app/Models/Thread.php
index 0673b41a..cfa62aa3 100644
--- a/app/Models/Thread.php
+++ b/app/Models/Thread.php
@@ -10,6 +10,7 @@
use App\Contracts\SubscribeInterface;
use App\Exceptions\CouldNotMarkReplyAsSolution;
use App\Filters\Thread\ThreadFilters;
+use App\Models\Scopes\LocaleScope;
use App\Traits\HasAuthor;
use App\Traits\HasReplies;
use App\Traits\HasSlug;
@@ -21,6 +22,7 @@
use CyrildeWit\EloquentViewable\Contracts\Viewable;
use CyrildeWit\EloquentViewable\InteractsWithViews;
use Exception;
+use Illuminate\Database\Eloquent\Attributes\ScopedBy;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
@@ -51,6 +53,7 @@
* @property Reply | null $solutionReply
* @property \Illuminate\Database\Eloquent\Collection | Channel[] $channels
*/
+#[ScopedBy([LocaleScope::class])]
final class Thread extends Model implements Feedable, ReactableInterface, ReplyInterface, SpamReportableContract, SubscribeInterface, Viewable
{
use HasAuthor;
diff --git a/bootstrap/app.php b/bootstrap/app.php
index 3f6d2e38..f737359d 100644
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -17,6 +17,11 @@
$middleware->alias([
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
'checkIfBanned' => \App\Http\Middleware\CheckIfBanned::class,
+ 'localize' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRoutes::class,
+ 'localizationRedirect' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter::class,
+ 'localeSessionRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect::class,
+ 'localeCookieRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleCookieRedirect::class,
+ 'localeViewPath' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationViewPath::class,
]);
$middleware->web(append: [
LocaleMiddleware::class,
diff --git a/composer.json b/composer.json
index 7cc0c79f..df05f761 100644
--- a/composer.json
+++ b/composer.json
@@ -31,6 +31,7 @@
"laravelcm/livewire-slide-overs": "^1.0",
"livewire/livewire": "^3.5",
"livewire/volt": "^1.6",
+ "mcamara/laravel-localization": "^2.2",
"mckenziearts/blade-untitledui-icons": "^1.3",
"notchpay/notchpay-php": "^1.6",
"qcod/laravel-gamify": "1.0.8",
diff --git a/composer.lock b/composer.lock
index 4d3feafe..d1b4f072 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "3dc875bd992bababfd251046188eda5b",
+ "content-hash": "c612fa65f2a8a8c00561c0beba0e3160",
"packages": [
{
"name": "abraham/twitteroauth",
@@ -6192,6 +6192,82 @@
},
"time": "2024-11-14T23:14:52+00:00"
},
+ {
+ "name": "mcamara/laravel-localization",
+ "version": "v2.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mcamara/laravel-localization.git",
+ "reference": "a19ddcc634dff6b06ae35ecb7f06b2a0444e9807"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mcamara/laravel-localization/zipball/a19ddcc634dff6b06ae35ecb7f06b2a0444e9807",
+ "reference": "a19ddcc634dff6b06ae35ecb7f06b2a0444e9807",
+ "shasum": ""
+ },
+ "require": {
+ "laravel/framework": "^10.0|^11.0",
+ "php": "^8.2"
+ },
+ "require-dev": {
+ "orchestra/testbench-browser-kit": "^8.5|^9.0",
+ "phpunit/phpunit": "^10.1"
+ },
+ "suggest": {
+ "ext-intl": "*"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "aliases": {
+ "LaravelLocalization": "Mcamara\\LaravelLocalization\\Facades\\LaravelLocalization"
+ },
+ "providers": [
+ "Mcamara\\LaravelLocalization\\LaravelLocalizationServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Mcamara\\LaravelLocalization": "src/"
+ },
+ "classmap": []
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marc Cámara",
+ "email": "mcamara88@gmail.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "Easy localization for Laravel",
+ "homepage": "https://github.com/mcamara/laravel-localization",
+ "keywords": [
+ "laravel",
+ "localization",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/mcamara/laravel-localization/issues",
+ "source": "https://github.com/mcamara/laravel-localization/tree/v2.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/iwasherefirst2",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/mcamara",
+ "type": "github"
+ }
+ ],
+ "time": "2024-11-27T21:06:34+00:00"
+ },
{
"name": "mckenziearts/blade-untitledui-icons",
"version": "v1.3.1",
diff --git a/config/laravellocalization.php b/config/laravellocalization.php
new file mode 100644
index 00000000..3064769b
--- /dev/null
+++ b/config/laravellocalization.php
@@ -0,0 +1,352 @@
+ [
+ //'ace' => ['name' => 'Achinese', 'script' => 'Latn', 'native' => 'Aceh', 'regional' => ''],
+ //'af' => ['name' => 'Afrikaans', 'script' => 'Latn', 'native' => 'Afrikaans', 'regional' => 'af_ZA'],
+ //'agq' => ['name' => 'Aghem', 'script' => 'Latn', 'native' => 'Aghem', 'regional' => ''],
+ //'ak' => ['name' => 'Akan', 'script' => 'Latn', 'native' => 'Akan', 'regional' => 'ak_GH'],
+ //'an' => ['name' => 'Aragonese', 'script' => 'Latn', 'native' => 'aragonés', 'regional' => 'an_ES'],
+ //'cch' => ['name' => 'Atsam', 'script' => 'Latn', 'native' => 'Atsam', 'regional' => ''],
+ //'gn' => ['name' => 'Guaraní', 'script' => 'Latn', 'native' => 'Avañe’ẽ', 'regional' => ''],
+ //'ae' => ['name' => 'Avestan', 'script' => 'Latn', 'native' => 'avesta', 'regional' => ''],
+ //'ay' => ['name' => 'Aymara', 'script' => 'Latn', 'native' => 'aymar aru', 'regional' => 'ay_PE'],
+ //'az' => ['name' => 'Azerbaijani (Latin)', 'script' => 'Latn', 'native' => 'azərbaycanca', 'regional' => 'az_AZ'],
+ //'id' => ['name' => 'Indonesian', 'script' => 'Latn', 'native' => 'Bahasa Indonesia', 'regional' => 'id_ID'],
+ //'ms' => ['name' => 'Malay', 'script' => 'Latn', 'native' => 'Bahasa Melayu', 'regional' => 'ms_MY'],
+ //'bm' => ['name' => 'Bambara', 'script' => 'Latn', 'native' => 'bamanakan', 'regional' => ''],
+ //'jv' => ['name' => 'Javanese (Latin)', 'script' => 'Latn', 'native' => 'Basa Jawa', 'regional' => ''],
+ //'su' => ['name' => 'Sundanese', 'script' => 'Latn', 'native' => 'Basa Sunda', 'regional' => ''],
+ //'bh' => ['name' => 'Bihari', 'script' => 'Latn', 'native' => 'Bihari', 'regional' => ''],
+ //'bi' => ['name' => 'Bislama', 'script' => 'Latn', 'native' => 'Bislama', 'regional' => ''],
+ //'nb' => ['name' => 'Norwegian Bokmål', 'script' => 'Latn', 'native' => 'Bokmål', 'regional' => 'nb_NO'],
+ //'bs' => ['name' => 'Bosnian', 'script' => 'Latn', 'native' => 'bosanski', 'regional' => 'bs_BA'],
+ //'br' => ['name' => 'Breton', 'script' => 'Latn', 'native' => 'brezhoneg', 'regional' => 'br_FR'],
+ //'ca' => ['name' => 'Catalan', 'script' => 'Latn', 'native' => 'català', 'regional' => 'ca_ES'],
+ //'ch' => ['name' => 'Chamorro', 'script' => 'Latn', 'native' => 'Chamoru', 'regional' => ''],
+ //'ny' => ['name' => 'Chewa', 'script' => 'Latn', 'native' => 'chiCheŵa', 'regional' => ''],
+ //'kde' => ['name' => 'Makonde', 'script' => 'Latn', 'native' => 'Chimakonde', 'regional' => ''],
+ //'sn' => ['name' => 'Shona', 'script' => 'Latn', 'native' => 'chiShona', 'regional' => ''],
+ //'co' => ['name' => 'Corsican', 'script' => 'Latn', 'native' => 'corsu', 'regional' => ''],
+ //'cy' => ['name' => 'Welsh', 'script' => 'Latn', 'native' => 'Cymraeg', 'regional' => 'cy_GB'],
+ //'da' => ['name' => 'Danish', 'script' => 'Latn', 'native' => 'dansk', 'regional' => 'da_DK'],
+ //'se' => ['name' => 'Northern Sami', 'script' => 'Latn', 'native' => 'davvisámegiella', 'regional' => 'se_NO'],
+ //'de' => ['name' => 'German', 'script' => 'Latn', 'native' => 'Deutsch', 'regional' => 'de_DE'],
+ //'luo' => ['name' => 'Luo', 'script' => 'Latn', 'native' => 'Dholuo', 'regional' => ''],
+ //'nv' => ['name' => 'Navajo', 'script' => 'Latn', 'native' => 'Diné bizaad', 'regional' => ''],
+ //'dua' => ['name' => 'Duala', 'script' => 'Latn', 'native' => 'duálá', 'regional' => ''],
+ //'et' => ['name' => 'Estonian', 'script' => 'Latn', 'native' => 'eesti', 'regional' => 'et_EE'],
+ //'na' => ['name' => 'Nauru', 'script' => 'Latn', 'native' => 'Ekakairũ Naoero', 'regional' => ''],
+ //'guz' => ['name' => 'Ekegusii', 'script' => 'Latn', 'native' => 'Ekegusii', 'regional' => ''],
+ 'en' => ['name' => 'English', 'script' => 'Latn', 'native' => 'English', 'regional' => 'en_GB'],
+ //'en-AU' => ['name' => 'Australian English', 'script' => 'Latn', 'native' => 'Australian English', 'regional' => 'en_AU'],
+ //'en-GB' => ['name' => 'British English', 'script' => 'Latn', 'native' => 'British English', 'regional' => 'en_GB'],
+ //'en-CA' => ['name' => 'Canadian English', 'script' => 'Latn', 'native' => 'Canadian English', 'regional' => 'en_CA'],
+ //'en-US' => ['name' => 'U.S. English', 'script' => 'Latn', 'native' => 'U.S. English', 'regional' => 'en_US'],
+ //'es' => ['name' => 'Spanish', 'script' => 'Latn', 'native' => 'español', 'regional' => 'es_ES'],
+ //'eo' => ['name' => 'Esperanto', 'script' => 'Latn', 'native' => 'esperanto', 'regional' => ''],
+ //'eu' => ['name' => 'Basque', 'script' => 'Latn', 'native' => 'euskara', 'regional' => 'eu_ES'],
+ //'ewo' => ['name' => 'Ewondo', 'script' => 'Latn', 'native' => 'ewondo', 'regional' => ''],
+ //'ee' => ['name' => 'Ewe', 'script' => 'Latn', 'native' => 'eʋegbe', 'regional' => ''],
+ //'fil' => ['name' => 'Filipino', 'script' => 'Latn', 'native' => 'Filipino', 'regional' => 'fil_PH'],
+ 'fr' => ['name' => 'French', 'script' => 'Latn', 'native' => 'français', 'regional' => 'fr_FR'],
+ //'fr-CA' => ['name' => 'Canadian French', 'script' => 'Latn', 'native' => 'français canadien', 'regional' => 'fr_CA'],
+ //'fy' => ['name' => 'Western Frisian', 'script' => 'Latn', 'native' => 'frysk', 'regional' => 'fy_DE'],
+ //'fur' => ['name' => 'Friulian', 'script' => 'Latn', 'native' => 'furlan', 'regional' => 'fur_IT'],
+ //'fo' => ['name' => 'Faroese', 'script' => 'Latn', 'native' => 'føroyskt', 'regional' => 'fo_FO'],
+ //'gaa' => ['name' => 'Ga', 'script' => 'Latn', 'native' => 'Ga', 'regional' => ''],
+ //'ga' => ['name' => 'Irish', 'script' => 'Latn', 'native' => 'Gaeilge', 'regional' => 'ga_IE'],
+ //'gv' => ['name' => 'Manx', 'script' => 'Latn', 'native' => 'Gaelg', 'regional' => 'gv_GB'],
+ //'sm' => ['name' => 'Samoan', 'script' => 'Latn', 'native' => 'Gagana fa’a Sāmoa', 'regional' => ''],
+ //'gl' => ['name' => 'Galician', 'script' => 'Latn', 'native' => 'galego', 'regional' => 'gl_ES'],
+ //'ki' => ['name' => 'Kikuyu', 'script' => 'Latn', 'native' => 'Gikuyu', 'regional' => ''],
+ //'gd' => ['name' => 'Scottish Gaelic', 'script' => 'Latn', 'native' => 'Gàidhlig', 'regional' => 'gd_GB'],
+ //'ha' => ['name' => 'Hausa', 'script' => 'Latn', 'native' => 'Hausa', 'regional' => 'ha_NG'],
+ //'bez' => ['name' => 'Bena', 'script' => 'Latn', 'native' => 'Hibena', 'regional' => ''],
+ //'ho' => ['name' => 'Hiri Motu', 'script' => 'Latn', 'native' => 'Hiri Motu', 'regional' => ''],
+ //'hr' => ['name' => 'Croatian', 'script' => 'Latn', 'native' => 'hrvatski', 'regional' => 'hr_HR'],
+ //'bem' => ['name' => 'Bemba', 'script' => 'Latn', 'native' => 'Ichibemba', 'regional' => 'bem_ZM'],
+ //'io' => ['name' => 'Ido', 'script' => 'Latn', 'native' => 'Ido', 'regional' => ''],
+ //'ig' => ['name' => 'Igbo', 'script' => 'Latn', 'native' => 'Igbo', 'regional' => 'ig_NG'],
+ //'rn' => ['name' => 'Rundi', 'script' => 'Latn', 'native' => 'Ikirundi', 'regional' => ''],
+ //'ia' => ['name' => 'Interlingua', 'script' => 'Latn', 'native' => 'interlingua', 'regional' => 'ia_FR'],
+ //'iu-Latn' => ['name' => 'Inuktitut (Latin)', 'script' => 'Latn', 'native' => 'Inuktitut', 'regional' => 'iu_CA'],
+ //'sbp' => ['name' => 'Sileibi', 'script' => 'Latn', 'native' => 'Ishisangu', 'regional' => ''],
+ //'nd' => ['name' => 'North Ndebele', 'script' => 'Latn', 'native' => 'isiNdebele', 'regional' => ''],
+ //'nr' => ['name' => 'South Ndebele', 'script' => 'Latn', 'native' => 'isiNdebele', 'regional' => 'nr_ZA'],
+ //'xh' => ['name' => 'Xhosa', 'script' => 'Latn', 'native' => 'isiXhosa', 'regional' => 'xh_ZA'],
+ //'zu' => ['name' => 'Zulu', 'script' => 'Latn', 'native' => 'isiZulu', 'regional' => 'zu_ZA'],
+ //'it' => ['name' => 'Italian', 'script' => 'Latn', 'native' => 'italiano', 'regional' => 'it_IT'],
+ //'ik' => ['name' => 'Inupiaq', 'script' => 'Latn', 'native' => 'Iñupiaq', 'regional' => 'ik_CA'],
+ //'dyo' => ['name' => 'Jola-Fonyi', 'script' => 'Latn', 'native' => 'joola', 'regional' => ''],
+ //'kea' => ['name' => 'Kabuverdianu', 'script' => 'Latn', 'native' => 'kabuverdianu', 'regional' => ''],
+ //'kaj' => ['name' => 'Jju', 'script' => 'Latn', 'native' => 'Kaje', 'regional' => ''],
+ //'mh' => ['name' => 'Marshallese', 'script' => 'Latn', 'native' => 'Kajin M̧ajeļ', 'regional' => 'mh_MH'],
+ //'kl' => ['name' => 'Kalaallisut', 'script' => 'Latn', 'native' => 'kalaallisut', 'regional' => 'kl_GL'],
+ //'kln' => ['name' => 'Kalenjin', 'script' => 'Latn', 'native' => 'Kalenjin', 'regional' => ''],
+ //'kr' => ['name' => 'Kanuri', 'script' => 'Latn', 'native' => 'Kanuri', 'regional' => ''],
+ //'kcg' => ['name' => 'Tyap', 'script' => 'Latn', 'native' => 'Katab', 'regional' => ''],
+ //'kw' => ['name' => 'Cornish', 'script' => 'Latn', 'native' => 'kernewek', 'regional' => 'kw_GB'],
+ //'naq' => ['name' => 'Nama', 'script' => 'Latn', 'native' => 'Khoekhoegowab', 'regional' => ''],
+ //'rof' => ['name' => 'Rombo', 'script' => 'Latn', 'native' => 'Kihorombo', 'regional' => ''],
+ //'kam' => ['name' => 'Kamba', 'script' => 'Latn', 'native' => 'Kikamba', 'regional' => ''],
+ //'kg' => ['name' => 'Kongo', 'script' => 'Latn', 'native' => 'Kikongo', 'regional' => ''],
+ //'jmc' => ['name' => 'Machame', 'script' => 'Latn', 'native' => 'Kimachame', 'regional' => ''],
+ //'rw' => ['name' => 'Kinyarwanda', 'script' => 'Latn', 'native' => 'Kinyarwanda', 'regional' => 'rw_RW'],
+ //'asa' => ['name' => 'Kipare', 'script' => 'Latn', 'native' => 'Kipare', 'regional' => ''],
+ //'rwk' => ['name' => 'Rwa', 'script' => 'Latn', 'native' => 'Kiruwa', 'regional' => ''],
+ //'saq' => ['name' => 'Samburu', 'script' => 'Latn', 'native' => 'Kisampur', 'regional' => ''],
+ //'ksb' => ['name' => 'Shambala', 'script' => 'Latn', 'native' => 'Kishambaa', 'regional' => ''],
+ //'swc' => ['name' => 'Congo Swahili', 'script' => 'Latn', 'native' => 'Kiswahili ya Kongo', 'regional' => ''],
+ //'sw' => ['name' => 'Swahili', 'script' => 'Latn', 'native' => 'Kiswahili', 'regional' => 'sw_KE'],
+ //'dav' => ['name' => 'Dawida', 'script' => 'Latn', 'native' => 'Kitaita', 'regional' => ''],
+ //'teo' => ['name' => 'Teso', 'script' => 'Latn', 'native' => 'Kiteso', 'regional' => ''],
+ //'khq' => ['name' => 'Koyra Chiini', 'script' => 'Latn', 'native' => 'Koyra ciini', 'regional' => ''],
+ //'ses' => ['name' => 'Songhay', 'script' => 'Latn', 'native' => 'Koyraboro senni', 'regional' => ''],
+ //'mfe' => ['name' => 'Morisyen', 'script' => 'Latn', 'native' => 'kreol morisien', 'regional' => ''],
+ //'ht' => ['name' => 'Haitian', 'script' => 'Latn', 'native' => 'Kreyòl ayisyen', 'regional' => 'ht_HT'],
+ //'kj' => ['name' => 'Kuanyama', 'script' => 'Latn', 'native' => 'Kwanyama', 'regional' => ''],
+ //'ksh' => ['name' => 'Kölsch', 'script' => 'Latn', 'native' => 'Kölsch', 'regional' => ''],
+ //'ebu' => ['name' => 'Kiembu', 'script' => 'Latn', 'native' => 'Kĩembu', 'regional' => ''],
+ //'mer' => ['name' => 'Kimîîru', 'script' => 'Latn', 'native' => 'Kĩmĩrũ', 'regional' => ''],
+ //'lag' => ['name' => 'Langi', 'script' => 'Latn', 'native' => 'Kɨlaangi', 'regional' => ''],
+ //'lah' => ['name' => 'Lahnda', 'script' => 'Latn', 'native' => 'Lahnda', 'regional' => ''],
+ //'la' => ['name' => 'Latin', 'script' => 'Latn', 'native' => 'latine', 'regional' => ''],
+ //'lv' => ['name' => 'Latvian', 'script' => 'Latn', 'native' => 'latviešu', 'regional' => 'lv_LV'],
+ //'to' => ['name' => 'Tongan', 'script' => 'Latn', 'native' => 'lea fakatonga', 'regional' => ''],
+ //'lt' => ['name' => 'Lithuanian', 'script' => 'Latn', 'native' => 'lietuvių', 'regional' => 'lt_LT'],
+ //'li' => ['name' => 'Limburgish', 'script' => 'Latn', 'native' => 'Limburgs', 'regional' => 'li_BE'],
+ //'ln' => ['name' => 'Lingala', 'script' => 'Latn', 'native' => 'lingála', 'regional' => ''],
+ //'lg' => ['name' => 'Ganda', 'script' => 'Latn', 'native' => 'Luganda', 'regional' => 'lg_UG'],
+ //'luy' => ['name' => 'Oluluyia', 'script' => 'Latn', 'native' => 'Luluhia', 'regional' => ''],
+ //'lb' => ['name' => 'Luxembourgish', 'script' => 'Latn', 'native' => 'Lëtzebuergesch', 'regional' => 'lb_LU'],
+ //'hu' => ['name' => 'Hungarian', 'script' => 'Latn', 'native' => 'magyar', 'regional' => 'hu_HU'],
+ //'mgh' => ['name' => 'Makhuwa-Meetto', 'script' => 'Latn', 'native' => 'Makua', 'regional' => ''],
+ //'mg' => ['name' => 'Malagasy', 'script' => 'Latn', 'native' => 'Malagasy', 'regional' => 'mg_MG'],
+ //'mt' => ['name' => 'Maltese', 'script' => 'Latn', 'native' => 'Malti', 'regional' => 'mt_MT'],
+ //'mtr' => ['name' => 'Mewari', 'script' => 'Latn', 'native' => 'Mewari', 'regional' => ''],
+ //'mua' => ['name' => 'Mundang', 'script' => 'Latn', 'native' => 'Mundang', 'regional' => ''],
+ //'mi' => ['name' => 'Māori', 'script' => 'Latn', 'native' => 'Māori', 'regional' => 'mi_NZ'],
+ //'nl' => ['name' => 'Dutch', 'script' => 'Latn', 'native' => 'Nederlands', 'regional' => 'nl_NL'],
+ //'nmg' => ['name' => 'Kwasio', 'script' => 'Latn', 'native' => 'ngumba', 'regional' => ''],
+ //'yav' => ['name' => 'Yangben', 'script' => 'Latn', 'native' => 'nuasue', 'regional' => ''],
+ //'nn' => ['name' => 'Norwegian Nynorsk', 'script' => 'Latn', 'native' => 'nynorsk', 'regional' => 'nn_NO'],
+ //'oc' => ['name' => 'Occitan', 'script' => 'Latn', 'native' => 'occitan', 'regional' => 'oc_FR'],
+ //'ang' => ['name' => 'Old English', 'script' => 'Runr', 'native' => 'Old English', 'regional' => ''],
+ //'xog' => ['name' => 'Soga', 'script' => 'Latn', 'native' => 'Olusoga', 'regional' => ''],
+ //'om' => ['name' => 'Oromo', 'script' => 'Latn', 'native' => 'Oromoo', 'regional' => 'om_ET'],
+ //'ng' => ['name' => 'Ndonga', 'script' => 'Latn', 'native' => 'OshiNdonga', 'regional' => ''],
+ //'hz' => ['name' => 'Herero', 'script' => 'Latn', 'native' => 'Otjiherero', 'regional' => ''],
+ //'uz-Latn' => ['name' => 'Uzbek (Latin)', 'script' => 'Latn', 'native' => 'oʼzbekcha', 'regional' => 'uz_UZ'],
+ //'nds' => ['name' => 'Low German', 'script' => 'Latn', 'native' => 'Plattdüütsch', 'regional' => 'nds_DE'],
+ //'pl' => ['name' => 'Polish', 'script' => 'Latn', 'native' => 'polski', 'regional' => 'pl_PL'],
+ //'pt' => ['name' => 'Portuguese', 'script' => 'Latn', 'native' => 'português', 'regional' => 'pt_PT'],
+ //'pt-BR' => ['name' => 'Brazilian Portuguese', 'script' => 'Latn', 'native' => 'português do Brasil', 'regional' => 'pt_BR'],
+ //'ff' => ['name' => 'Fulah', 'script' => 'Latn', 'native' => 'Pulaar', 'regional' => 'ff_SN'],
+ //'pi' => ['name' => 'Pahari-Potwari', 'script' => 'Latn', 'native' => 'Pāli', 'regional' => ''],
+ //'aa' => ['name' => 'Afar', 'script' => 'Latn', 'native' => 'Qafar', 'regional' => 'aa_ER'],
+ //'ty' => ['name' => 'Tahitian', 'script' => 'Latn', 'native' => 'Reo Māohi', 'regional' => ''],
+ //'ksf' => ['name' => 'Bafia', 'script' => 'Latn', 'native' => 'rikpa', 'regional' => ''],
+ //'ro' => ['name' => 'Romanian', 'script' => 'Latn', 'native' => 'română', 'regional' => 'ro_RO'],
+ //'cgg' => ['name' => 'Chiga', 'script' => 'Latn', 'native' => 'Rukiga', 'regional' => ''],
+ //'rm' => ['name' => 'Romansh', 'script' => 'Latn', 'native' => 'rumantsch', 'regional' => ''],
+ //'qu' => ['name' => 'Quechua', 'script' => 'Latn', 'native' => 'Runa Simi', 'regional' => ''],
+ //'nyn' => ['name' => 'Nyankole', 'script' => 'Latn', 'native' => 'Runyankore', 'regional' => ''],
+ //'ssy' => ['name' => 'Saho', 'script' => 'Latn', 'native' => 'Saho', 'regional' => ''],
+ //'sc' => ['name' => 'Sardinian', 'script' => 'Latn', 'native' => 'sardu', 'regional' => 'sc_IT'],
+ //'de-CH' => ['name' => 'Swiss High German', 'script' => 'Latn', 'native' => 'Schweizer Hochdeutsch', 'regional' => 'de_CH'],
+ //'gsw' => ['name' => 'Swiss German', 'script' => 'Latn', 'native' => 'Schwiizertüütsch', 'regional' => ''],
+ //'trv' => ['name' => 'Taroko', 'script' => 'Latn', 'native' => 'Seediq', 'regional' => ''],
+ //'seh' => ['name' => 'Sena', 'script' => 'Latn', 'native' => 'sena', 'regional' => ''],
+ //'nso' => ['name' => 'Northern Sotho', 'script' => 'Latn', 'native' => 'Sesotho sa Leboa', 'regional' => 'nso_ZA'],
+ //'st' => ['name' => 'Southern Sotho', 'script' => 'Latn', 'native' => 'Sesotho', 'regional' => 'st_ZA'],
+ //'tn' => ['name' => 'Tswana', 'script' => 'Latn', 'native' => 'Setswana', 'regional' => 'tn_ZA'],
+ //'sq' => ['name' => 'Albanian', 'script' => 'Latn', 'native' => 'shqip', 'regional' => 'sq_AL'],
+ //'sid' => ['name' => 'Sidamo', 'script' => 'Latn', 'native' => 'Sidaamu Afo', 'regional' => 'sid_ET'],
+ //'ss' => ['name' => 'Swati', 'script' => 'Latn', 'native' => 'Siswati', 'regional' => 'ss_ZA'],
+ //'sk' => ['name' => 'Slovak', 'script' => 'Latn', 'native' => 'slovenčina', 'regional' => 'sk_SK'],
+ //'sl' => ['name' => 'Slovene', 'script' => 'Latn', 'native' => 'slovenščina', 'regional' => 'sl_SI'],
+ //'so' => ['name' => 'Somali', 'script' => 'Latn', 'native' => 'Soomaali', 'regional' => 'so_SO'],
+ //'sr-Latn' => ['name' => 'Serbian (Latin)', 'script' => 'Latn', 'native' => 'Srpski', 'regional' => 'sr_RS'],
+ //'sh' => ['name' => 'Serbo-Croatian', 'script' => 'Latn', 'native' => 'srpskohrvatski', 'regional' => ''],
+ //'fi' => ['name' => 'Finnish', 'script' => 'Latn', 'native' => 'suomi', 'regional' => 'fi_FI'],
+ //'sv' => ['name' => 'Swedish', 'script' => 'Latn', 'native' => 'svenska', 'regional' => 'sv_SE'],
+ //'sg' => ['name' => 'Sango', 'script' => 'Latn', 'native' => 'Sängö', 'regional' => ''],
+ //'tl' => ['name' => 'Tagalog', 'script' => 'Latn', 'native' => 'Tagalog', 'regional' => 'tl_PH'],
+ //'tzm-Latn' => ['name' => 'Central Atlas Tamazight (Latin)', 'script' => 'Latn', 'native' => 'Tamazight', 'regional' => ''],
+ //'kab' => ['name' => 'Kabyle', 'script' => 'Latn', 'native' => 'Taqbaylit', 'regional' => 'kab_DZ'],
+ //'twq' => ['name' => 'Tasawaq', 'script' => 'Latn', 'native' => 'Tasawaq senni', 'regional' => ''],
+ //'shi' => ['name' => 'Tachelhit (Latin)', 'script' => 'Latn', 'native' => 'Tashelhit', 'regional' => ''],
+ //'nus' => ['name' => 'Nuer', 'script' => 'Latn', 'native' => 'Thok Nath', 'regional' => ''],
+ //'vi' => ['name' => 'Vietnamese', 'script' => 'Latn', 'native' => 'Tiếng Việt', 'regional' => 'vi_VN'],
+ //'tg-Latn' => ['name' => 'Tajik (Latin)', 'script' => 'Latn', 'native' => 'tojikī', 'regional' => 'tg_TJ'],
+ //'lu' => ['name' => 'Luba-Katanga', 'script' => 'Latn', 'native' => 'Tshiluba', 'regional' => 've_ZA'],
+ //'ve' => ['name' => 'Venda', 'script' => 'Latn', 'native' => 'Tshivenḓa', 'regional' => ''],
+ //'tw' => ['name' => 'Twi', 'script' => 'Latn', 'native' => 'Twi', 'regional' => ''],
+ //'tr' => ['name' => 'Turkish', 'script' => 'Latn', 'native' => 'Türkçe', 'regional' => 'tr_TR'],
+ //'ale' => ['name' => 'Aleut', 'script' => 'Latn', 'native' => 'Unangax tunuu', 'regional' => ''],
+ //'ca-valencia' => ['name' => 'Valencian', 'script' => 'Latn', 'native' => 'valencià', 'regional' => ''],
+ //'vai-Latn' => ['name' => 'Vai (Latin)', 'script' => 'Latn', 'native' => 'Viyamíĩ', 'regional' => ''],
+ //'vo' => ['name' => 'Volapük', 'script' => 'Latn', 'native' => 'Volapük', 'regional' => ''],
+ //'fj' => ['name' => 'Fijian', 'script' => 'Latn', 'native' => 'vosa Vakaviti', 'regional' => ''],
+ //'wa' => ['name' => 'Walloon', 'script' => 'Latn', 'native' => 'Walon', 'regional' => 'wa_BE'],
+ //'wae' => ['name' => 'Walser', 'script' => 'Latn', 'native' => 'Walser', 'regional' => 'wae_CH'],
+ //'wen' => ['name' => 'Sorbian', 'script' => 'Latn', 'native' => 'Wendic', 'regional' => ''],
+ //'wo' => ['name' => 'Wolof', 'script' => 'Latn', 'native' => 'Wolof', 'regional' => 'wo_SN'],
+ //'ts' => ['name' => 'Tsonga', 'script' => 'Latn', 'native' => 'Xitsonga', 'regional' => 'ts_ZA'],
+ //'dje' => ['name' => 'Zarma', 'script' => 'Latn', 'native' => 'Zarmaciine', 'regional' => ''],
+ //'yo' => ['name' => 'Yoruba', 'script' => 'Latn', 'native' => 'Èdè Yorùbá', 'regional' => 'yo_NG'],
+ // 'de-AT' => ['name' => 'Austrian German', 'script' => 'Latn', 'native' => 'Österreichisches Deutsch', 'regional' => 'de_AT'],
+ //'is' => ['name' => 'Icelandic', 'script' => 'Latn', 'native' => 'íslenska', 'regional' => 'is_IS'],
+ //'cs' => ['name' => 'Czech', 'script' => 'Latn', 'native' => 'čeština', 'regional' => 'cs_CZ'],
+ //'bas' => ['name' => 'Basa', 'script' => 'Latn', 'native' => 'Ɓàsàa', 'regional' => ''],
+ //'mas' => ['name' => 'Masai', 'script' => 'Latn', 'native' => 'ɔl-Maa', 'regional' => ''],
+ //'haw' => ['name' => 'Hawaiian', 'script' => 'Latn', 'native' => 'ʻŌlelo Hawaiʻi', 'regional' => ''],
+ //'el' => ['name' => 'Greek', 'script' => 'Grek', 'native' => 'Ελληνικά', 'regional' => 'el_GR'],
+ //'uz' => ['name' => 'Uzbek (Cyrillic)', 'script' => 'Cyrl', 'native' => 'Ўзбек', 'regional' => 'uz_UZ'],
+ //'az-Cyrl' => ['name' => 'Azerbaijani (Cyrillic)', 'script' => 'Cyrl', 'native' => 'Азәрбајҹан', 'regional' => 'uz_UZ'],
+ //'ab' => ['name' => 'Abkhazian', 'script' => 'Cyrl', 'native' => 'Аҧсуа', 'regional' => ''],
+ //'os' => ['name' => 'Ossetic', 'script' => 'Cyrl', 'native' => 'Ирон', 'regional' => 'os_RU'],
+ //'ky' => ['name' => 'Kyrgyz', 'script' => 'Cyrl', 'native' => 'Кыргыз', 'regional' => 'ky_KG'],
+ //'sr' => ['name' => 'Serbian (Cyrillic)', 'script' => 'Cyrl', 'native' => 'Српски', 'regional' => 'sr_RS'],
+ //'av' => ['name' => 'Avaric', 'script' => 'Cyrl', 'native' => 'авар мацӀ', 'regional' => ''],
+ //'ady' => ['name' => 'Adyghe', 'script' => 'Cyrl', 'native' => 'адыгэбзэ', 'regional' => ''],
+ //'ba' => ['name' => 'Bashkir', 'script' => 'Cyrl', 'native' => 'башҡорт теле', 'regional' => ''],
+ //'be' => ['name' => 'Belarusian', 'script' => 'Cyrl', 'native' => 'беларуская', 'regional' => 'be_BY'],
+ //'bg' => ['name' => 'Bulgarian', 'script' => 'Cyrl', 'native' => 'български', 'regional' => 'bg_BG'],
+ //'kv' => ['name' => 'Komi', 'script' => 'Cyrl', 'native' => 'коми кыв', 'regional' => ''],
+ //'mk' => ['name' => 'Macedonian', 'script' => 'Cyrl', 'native' => 'македонски', 'regional' => 'mk_MK'],
+ //'mn' => ['name' => 'Mongolian (Cyrillic)', 'script' => 'Cyrl', 'native' => 'монгол', 'regional' => 'mn_MN'],
+ //'ce' => ['name' => 'Chechen', 'script' => 'Cyrl', 'native' => 'нохчийн мотт', 'regional' => 'ce_RU'],
+ //'ru' => ['name' => 'Russian', 'script' => 'Cyrl', 'native' => 'русский', 'regional' => 'ru_RU'],
+ //'sah' => ['name' => 'Yakut', 'script' => 'Cyrl', 'native' => 'саха тыла', 'regional' => ''],
+ //'tt' => ['name' => 'Tatar', 'script' => 'Cyrl', 'native' => 'татар теле', 'regional' => 'tt_RU'],
+ //'tg' => ['name' => 'Tajik (Cyrillic)', 'script' => 'Cyrl', 'native' => 'тоҷикӣ', 'regional' => 'tg_TJ'],
+ //'tk' => ['name' => 'Turkmen', 'script' => 'Cyrl', 'native' => 'түркменче', 'regional' => 'tk_TM'],
+ //'uk' => ['name' => 'Ukrainian', 'script' => 'Cyrl', 'native' => 'українська', 'regional' => 'uk_UA'],
+ //'cv' => ['name' => 'Chuvash', 'script' => 'Cyrl', 'native' => 'чӑваш чӗлхи', 'regional' => 'cv_RU'],
+ //'cu' => ['name' => 'Church Slavic', 'script' => 'Cyrl', 'native' => 'ѩзыкъ словѣньскъ', 'regional' => ''],
+ //'kk' => ['name' => 'Kazakh', 'script' => 'Cyrl', 'native' => 'қазақ тілі', 'regional' => 'kk_KZ'],
+ //'hy' => ['name' => 'Armenian', 'script' => 'Armn', 'native' => 'Հայերեն', 'regional' => 'hy_AM'],
+ //'yi' => ['name' => 'Yiddish', 'script' => 'Hebr', 'native' => 'ייִדיש', 'regional' => 'yi_US'],
+ //'he' => ['name' => 'Hebrew', 'script' => 'Hebr', 'native' => 'עברית', 'regional' => 'he_IL'],
+ //'ug' => ['name' => 'Uyghur', 'script' => 'Arab', 'native' => 'ئۇيغۇرچە', 'regional' => 'ug_CN'],
+ //'ur' => ['name' => 'Urdu', 'script' => 'Arab', 'native' => 'اردو', 'regional' => 'ur_PK'],
+ //'ar' => ['name' => 'Arabic', 'script' => 'Arab', 'native' => 'العربية', 'regional' => 'ar_AE'],
+ //'uz-Arab' => ['name' => 'Uzbek (Arabic)', 'script' => 'Arab', 'native' => 'اۉزبېک', 'regional' => ''],
+ //'tg-Arab' => ['name' => 'Tajik (Arabic)', 'script' => 'Arab', 'native' => 'تاجیکی', 'regional' => 'tg_TJ'],
+ //'sd' => ['name' => 'Sindhi', 'script' => 'Arab', 'native' => 'سنڌي', 'regional' => 'sd_IN'],
+ //'fa' => ['name' => 'Persian', 'script' => 'Arab', 'native' => 'فارسی', 'regional' => 'fa_IR'],
+ //'pa-Arab' => ['name' => 'Punjabi (Arabic)', 'script' => 'Arab', 'native' => 'پنجاب', 'regional' => 'pa_IN'],
+ //'ps' => ['name' => 'Pashto', 'script' => 'Arab', 'native' => 'پښتو', 'regional' => 'ps_AF'],
+ //'ks' => ['name' => 'Kashmiri (Arabic)', 'script' => 'Arab', 'native' => 'کأشُر', 'regional' => 'ks_IN'],
+ //'ku' => ['name' => 'Kurdish', 'script' => 'Arab', 'native' => 'کوردی', 'regional' => 'ku_TR'],
+ //'dv' => ['name' => 'Divehi', 'script' => 'Thaa', 'native' => 'ދިވެހިބަސް', 'regional' => 'dv_MV'],
+ //'ks-Deva' => ['name' => 'Kashmiri (Devaganari)', 'script' => 'Deva', 'native' => 'कॉशुर', 'regional' => 'ks_IN'],
+ //'kok' => ['name' => 'Konkani', 'script' => 'Deva', 'native' => 'कोंकणी', 'regional' => 'kok_IN'],
+ //'doi' => ['name' => 'Dogri', 'script' => 'Deva', 'native' => 'डोगरी', 'regional' => 'doi_IN'],
+ //'ne' => ['name' => 'Nepali', 'script' => 'Deva', 'native' => 'नेपाली', 'regional' => ''],
+ //'pra' => ['name' => 'Prakrit', 'script' => 'Deva', 'native' => 'प्राकृत', 'regional' => ''],
+ //'brx' => ['name' => 'Bodo', 'script' => 'Deva', 'native' => 'बड़ो', 'regional' => 'brx_IN'],
+ //'bra' => ['name' => 'Braj', 'script' => 'Deva', 'native' => 'ब्रज भाषा', 'regional' => ''],
+ //'mr' => ['name' => 'Marathi', 'script' => 'Deva', 'native' => 'मराठी', 'regional' => 'mr_IN'],
+ //'mai' => ['name' => 'Maithili', 'script' => 'Tirh', 'native' => 'मैथिली', 'regional' => 'mai_IN'],
+ //'raj' => ['name' => 'Rajasthani', 'script' => 'Deva', 'native' => 'राजस्थानी', 'regional' => ''],
+ //'sa' => ['name' => 'Sanskrit', 'script' => 'Deva', 'native' => 'संस्कृतम्', 'regional' => 'sa_IN'],
+ //'hi' => ['name' => 'Hindi', 'script' => 'Deva', 'native' => 'हिन्दी', 'regional' => 'hi_IN'],
+ //'as' => ['name' => 'Assamese', 'script' => 'Beng', 'native' => 'অসমীয়া', 'regional' => 'as_IN'],
+ //'bn' => ['name' => 'Bengali', 'script' => 'Beng', 'native' => 'বাংলা', 'regional' => 'bn_BD'],
+ //'mni' => ['name' => 'Manipuri', 'script' => 'Beng', 'native' => 'মৈতৈ', 'regional' => 'mni_IN'],
+ //'pa' => ['name' => 'Punjabi (Gurmukhi)', 'script' => 'Guru', 'native' => 'ਪੰਜਾਬੀ', 'regional' => 'pa_IN'],
+ //'gu' => ['name' => 'Gujarati', 'script' => 'Gujr', 'native' => 'ગુજરાતી', 'regional' => 'gu_IN'],
+ //'or' => ['name' => 'Oriya', 'script' => 'Orya', 'native' => 'ଓଡ଼ିଆ', 'regional' => 'or_IN'],
+ //'ta' => ['name' => 'Tamil', 'script' => 'Taml', 'native' => 'தமிழ்', 'regional' => 'ta_IN'],
+ //'te' => ['name' => 'Telugu', 'script' => 'Telu', 'native' => 'తెలుగు', 'regional' => 'te_IN'],
+ //'kn' => ['name' => 'Kannada', 'script' => 'Knda', 'native' => 'ಕನ್ನಡ', 'regional' => 'kn_IN'],
+ //'ml' => ['name' => 'Malayalam', 'script' => 'Mlym', 'native' => 'മലയാളം', 'regional' => 'ml_IN'],
+ //'si' => ['name' => 'Sinhala', 'script' => 'Sinh', 'native' => 'සිංහල', 'regional' => 'si_LK'],
+ //'th' => ['name' => 'Thai', 'script' => 'Thai', 'native' => 'ไทย', 'regional' => 'th_TH'],
+ //'lo' => ['name' => 'Lao', 'script' => 'Laoo', 'native' => 'ລາວ', 'regional' => 'lo_LA'],
+ //'bo' => ['name' => 'Tibetan', 'script' => 'Tibt', 'native' => 'པོད་སྐད་', 'regional' => 'bo_IN'],
+ //'dz' => ['name' => 'Dzongkha', 'script' => 'Tibt', 'native' => 'རྫོང་ཁ', 'regional' => 'dz_BT'],
+ //'my' => ['name' => 'Burmese', 'script' => 'Mymr', 'native' => 'မြန်မာဘာသာ', 'regional' => 'my_MM'],
+ //'ka' => ['name' => 'Georgian', 'script' => 'Geor', 'native' => 'ქართული', 'regional' => 'ka_GE'],
+ //'byn' => ['name' => 'Blin', 'script' => 'Ethi', 'native' => 'ብሊን', 'regional' => 'byn_ER'],
+ //'tig' => ['name' => 'Tigre', 'script' => 'Ethi', 'native' => 'ትግረ', 'regional' => 'tig_ER'],
+ //'ti' => ['name' => 'Tigrinya', 'script' => 'Ethi', 'native' => 'ትግርኛ', 'regional' => 'ti_ET'],
+ //'am' => ['name' => 'Amharic', 'script' => 'Ethi', 'native' => 'አማርኛ', 'regional' => 'am_ET'],
+ //'wal' => ['name' => 'Wolaytta', 'script' => 'Ethi', 'native' => 'ወላይታቱ', 'regional' => 'wal_ET'],
+ //'chr' => ['name' => 'Cherokee', 'script' => 'Cher', 'native' => 'ᏣᎳᎩ', 'regional' => ''],
+ //'iu' => ['name' => 'Inuktitut (Canadian Aboriginal Syllabics)', 'script' => 'Cans', 'native' => 'ᐃᓄᒃᑎᑐᑦ', 'regional' => 'iu_CA'],
+ //'oj' => ['name' => 'Ojibwa', 'script' => 'Cans', 'native' => 'ᐊᓂᔑᓈᐯᒧᐎᓐ', 'regional' => ''],
+ //'cr' => ['name' => 'Cree', 'script' => 'Cans', 'native' => 'ᓀᐦᐃᔭᐍᐏᐣ', 'regional' => ''],
+ //'km' => ['name' => 'Khmer', 'script' => 'Khmr', 'native' => 'ភាសាខ្មែរ', 'regional' => 'km_KH'],
+ //'mn-Mong' => ['name' => 'Mongolian (Mongolian)', 'script' => 'Mong', 'native' => 'ᠮᠣᠨᠭᠭᠣᠯ ᠬᠡᠯᠡ', 'regional' => 'mn_MN'],
+ //'shi-Tfng' => ['name' => 'Tachelhit (Tifinagh)', 'script' => 'Tfng', 'native' => 'ⵜⴰⵎⴰⵣⵉⵖⵜ', 'regional' => ''],
+ //'tzm' => ['name' => 'Central Atlas Tamazight (Tifinagh)','script' => 'Tfng', 'native' => 'ⵜⴰⵎⴰⵣⵉⵖⵜ', 'regional' => ''],
+ //'yue' => ['name' => 'Yue', 'script' => 'Hant', 'native' => '廣州話', 'regional' => 'yue_HK'],
+ //'ja' => ['name' => 'Japanese', 'script' => 'Jpan', 'native' => '日本語', 'regional' => 'ja_JP'],
+ //'zh' => ['name' => 'Chinese (Simplified)', 'script' => 'Hans', 'native' => '简体中文', 'regional' => 'zh_CN'],
+ //'zh-Hant' => ['name' => 'Chinese (Traditional)', 'script' => 'Hant', 'native' => '繁體中文', 'regional' => 'zh_CN'],
+ //'ii' => ['name' => 'Sichuan Yi', 'script' => 'Yiii', 'native' => 'ꆈꌠꉙ', 'regional' => ''],
+ //'vai' => ['name' => 'Vai (Vai)', 'script' => 'Vaii', 'native' => 'ꕙꔤ', 'regional' => ''],
+ //'jv-Java' => ['name' => 'Javanese (Javanese)', 'script' => 'Java', 'native' => 'ꦧꦱꦗꦮ', 'regional' => ''],
+ //'ko' => ['name' => 'Korean', 'script' => 'Hang', 'native' => '한국어', 'regional' => 'ko_KR'],
+ ],
+
+ // Requires middleware `LaravelSessionRedirect.php`.
+ //
+ // Automatically determine locale from browser (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language)
+ // on first call if it's not defined in the URL. Redirect user to computed localized url.
+ // For example, if users browser language is `de`, and `de` is active in the array `supportedLocales`,
+ // the `/about` would be redirected to `/de/about`.
+ //
+ // The locale will be stored in session and only be computed from browser
+ // again if the session expires.
+ //
+ // If false, system will take app.php locale attribute
+ 'useAcceptLanguageHeader' => false,
+
+ // If `hideDefaultLocaleInURL` is true, then a url without locale
+ // is identical with the same url with default locale.
+ // For example, if `en` is default locale, then `/en/about` and `/about`
+ // would be identical.
+ //
+ // If in addition the middleware `LaravelLocalizationRedirectFilter` is active, then
+ // every url with default locale is redirected to url without locale.
+ // For example, `/en/about` would be redirected to `/about`.
+ // It is recommended to use `hideDefaultLocaleInURL` only in
+ // combination with the middleware `LaravelLocalizationRedirectFilter`
+ // to avoid duplicate content (SEO).
+ //
+ // If `useAcceptLanguageHeader` is true, then the first time
+ // the locale will be determined from browser and redirect to that language.
+ // After that, `hideDefaultLocaleInURL` behaves as usual.
+ 'hideDefaultLocaleInURL' => false,
+
+ // If you want to display the locales in particular order in the language selector you should write the order here.
+ //CAUTION: Please consider using the appropriate locale code otherwise it will not work
+ //Example: 'localesOrder' => ['es','en'],
+ 'localesOrder' => [],
+
+ // If you want to use custom language URL segments like 'at' instead of 'de-AT', you can map them to allow the
+ // LanguageNegotiator to assign the desired locales based on HTTP Accept Language Header. For example, if you want
+ // to use 'at' instead of 'de-AT', you would map 'de-AT' to 'at' (ie. ['de-AT' => 'at']).
+ 'localesMapping' => [],
+
+ // Locale suffix for LC_TIME and LC_MONETARY
+ // Defaults to most common ".UTF-8". Set to blank on Windows systems, change to ".utf8" on CentOS and similar.
+ 'utf8suffix' => env('LARAVELLOCALIZATION_UTF8SUFFIX', '.UTF-8'),
+
+ // URLs which should not be processed, e.g. '/nova', '/nova/*', '/nova-api/*' or specific application URLs
+ // Defaults to []
+ 'urlsIgnored' => ['/skipped'],
+
+ 'httpMethodsIgnored' => ['POST', 'PUT', 'PATCH', 'DELETE'],
+];
diff --git a/routes/web.php b/routes/web.php
index 5826d270..fb996169 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -11,46 +11,49 @@
use App\Http\Controllers\SponsoringController;
use App\Http\Controllers\SubscriptionController;
use Illuminate\Support\Facades\Route;
+use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
-Route::get('/', HomeController::class)->name('home');
+Route::group(['prefix' => LaravelLocalization::setLocale(), 'middleware' => ['localeSessionRedirect', 'localizationRedirect', 'localeViewPath']], function (): void {
+ Route::get('/', HomeController::class)->name('home');
-// Static pages
-Route::view('a-propos', 'about')->name('about');
-Route::view('faq', 'faq')->name('faq');
-Route::view('privacy', 'privacy')->name('privacy');
-Route::view('rules', 'rules')->name('rules');
-Route::view('terms', 'terms')->name('terms');
-Route::view('slack', 'slack')->name('slack');
-Route::post('slack', SlackController::class)->name('slack.send');
-Route::post('uploads/process', [FileUploadController::class, 'process'])
- ->middleware('auth')
- ->name('uploads.process');
+ // Static pages
+ Route::view('a-propos', 'about')->name('about');
+ Route::view('faq', 'faq')->name('faq');
+ Route::view('privacy', 'privacy')->name('privacy');
+ Route::view('rules', 'rules')->name('rules');
+ Route::view('terms', 'terms')->name('terms');
+ Route::view('slack', 'slack')->name('slack');
+ Route::post('slack', SlackController::class)->name('slack.send');
+ Route::post('uploads/process', [FileUploadController::class, 'process'])
+ ->middleware('auth')
+ ->name('uploads.process');
-// Social authentication
-Route::get('auth/{provider}', [OAuthController::class, 'redirectToProvider'])->name('social.auth');
-Route::get('auth/{provider}/callback', [OAuthController::class, 'handleProviderCallback']);
+ // Social authentication
+ Route::get('auth/{provider}', [OAuthController::class, 'redirectToProvider'])->name('social.auth');
+ Route::get('auth/{provider}/callback', [OAuthController::class, 'handleProviderCallback']);
-// Articles
-Route::prefix('articles')->as('articles.')->group(base_path('routes/features/article.php'));
-Route::prefix('discussions')->as('discussions.')->group(base_path('routes/features/discussion.php'));
-Route::prefix('forum')->as('forum.')->group(base_path('routes/features/forum.php'));
+ // Articles
+ Route::prefix('articles')->as('articles.')->group(base_path('routes/features/article.php'));
+ Route::prefix('discussions')->as('discussions.')->group(base_path('routes/features/discussion.php'));
+ Route::prefix('forum')->as('forum.')->group(base_path('routes/features/forum.php'));
-// Replies
-Route::get('replyable/{id}/{type}', [ReplyAbleController::class, 'redirect'])->name('replyable');
+ // Replies
+ Route::get('replyable/{id}/{type}', [ReplyAbleController::class, 'redirect'])->name('replyable');
-// Subscriptions
-Route::get('subscriptions/{subscription}/unsubscribe', [SubscriptionController::class, 'unsubscribe'])
- ->name('subscriptions.unsubscribe');
-Route::get('subscribeable/{id}/{type}', [SubscriptionController::class, 'redirect'])->name('subscriptions.redirect');
+ // Subscriptions
+ Route::get('subscriptions/{subscription}/unsubscribe', [SubscriptionController::class, 'unsubscribe'])
+ ->name('subscriptions.unsubscribe');
+ Route::get('subscribeable/{id}/{type}', [SubscriptionController::class, 'redirect'])->name('subscriptions.redirect');
-// Notifications
-Route::view('notifications', 'user.notifications')->name('notifications')->middleware(['auth', 'checkIfBanned']);
+ // Notifications
+ Route::view('notifications', 'user.notifications')->name('notifications')->middleware(['auth', 'checkIfBanned']);
-Route::feeds();
+ Route::feeds();
-Route::get('sponsors', [SponsoringController::class, 'sponsors'])->name('sponsors');
-Route::get('callback-payment', NotchPayCallBackController::class)->name('notchpay-callback');
+ Route::get('sponsors', [SponsoringController::class, 'sponsors'])->name('sponsors');
+ Route::get('callback-payment', NotchPayCallBackController::class)->name('notchpay-callback');
-require __DIR__.'/features/account.php';
+ require __DIR__.'/features/account.php';
-require __DIR__.'/auth.php';
+ require __DIR__.'/auth.php';
+});
From b763941e91cbc129987a84bfc3ff5a3aef9d9531 Mon Sep 17 00:00:00 2001
From: Chri$
Date: Fri, 6 Dec 2024 23:55:11 +0100
Subject: [PATCH 13/15] remove localization package and config file
---
app/Http/Middleware/LocaleMiddleware.php | 2 +-
app/Livewire/Components/ChangeLocale.php | 2 +-
bootstrap/app.php | 5 -
composer.json | 1 -
composer.lock | 78 +----
config/laravellocalization.php | 352 -----------------------
routes/web.php | 67 +++--
7 files changed, 35 insertions(+), 472 deletions(-)
delete mode 100644 config/laravellocalization.php
diff --git a/app/Http/Middleware/LocaleMiddleware.php b/app/Http/Middleware/LocaleMiddleware.php
index 387ee97e..b8ecda32 100644
--- a/app/Http/Middleware/LocaleMiddleware.php
+++ b/app/Http/Middleware/LocaleMiddleware.php
@@ -15,7 +15,7 @@ public function handle(Request $request, Closure $next): Response
{
$browserLocale = explode('_', (string) $request->getPreferredLanguage())[0];
$currentLocale = app()->getLocale();
- $activeLocale = session()->get('locale_lang');
+ $activeLocale = session()->get('locale');
$supportedLocales = config('lcm.supported_locales');
if (Auth::check()) {
diff --git a/app/Livewire/Components/ChangeLocale.php b/app/Livewire/Components/ChangeLocale.php
index 48d5e8cd..4ce220d4 100644
--- a/app/Livewire/Components/ChangeLocale.php
+++ b/app/Livewire/Components/ChangeLocale.php
@@ -29,7 +29,7 @@ public function changeLocale(): void
$this->currentLocale = $locale;
app()->setLocale($locale);
- session()->put('locale_lang', $locale);
+ session()->put('locale', $locale);
Pluralizer::useLanguage($this->currentLocale === 'fr' ? 'french' : 'english');
diff --git a/bootstrap/app.php b/bootstrap/app.php
index f737359d..3f6d2e38 100644
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -17,11 +17,6 @@
$middleware->alias([
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
'checkIfBanned' => \App\Http\Middleware\CheckIfBanned::class,
- 'localize' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRoutes::class,
- 'localizationRedirect' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter::class,
- 'localeSessionRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect::class,
- 'localeCookieRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleCookieRedirect::class,
- 'localeViewPath' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationViewPath::class,
]);
$middleware->web(append: [
LocaleMiddleware::class,
diff --git a/composer.json b/composer.json
index df05f761..7cc0c79f 100644
--- a/composer.json
+++ b/composer.json
@@ -31,7 +31,6 @@
"laravelcm/livewire-slide-overs": "^1.0",
"livewire/livewire": "^3.5",
"livewire/volt": "^1.6",
- "mcamara/laravel-localization": "^2.2",
"mckenziearts/blade-untitledui-icons": "^1.3",
"notchpay/notchpay-php": "^1.6",
"qcod/laravel-gamify": "1.0.8",
diff --git a/composer.lock b/composer.lock
index d1b4f072..4d3feafe 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "c612fa65f2a8a8c00561c0beba0e3160",
+ "content-hash": "3dc875bd992bababfd251046188eda5b",
"packages": [
{
"name": "abraham/twitteroauth",
@@ -6192,82 +6192,6 @@
},
"time": "2024-11-14T23:14:52+00:00"
},
- {
- "name": "mcamara/laravel-localization",
- "version": "v2.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/mcamara/laravel-localization.git",
- "reference": "a19ddcc634dff6b06ae35ecb7f06b2a0444e9807"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/mcamara/laravel-localization/zipball/a19ddcc634dff6b06ae35ecb7f06b2a0444e9807",
- "reference": "a19ddcc634dff6b06ae35ecb7f06b2a0444e9807",
- "shasum": ""
- },
- "require": {
- "laravel/framework": "^10.0|^11.0",
- "php": "^8.2"
- },
- "require-dev": {
- "orchestra/testbench-browser-kit": "^8.5|^9.0",
- "phpunit/phpunit": "^10.1"
- },
- "suggest": {
- "ext-intl": "*"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "LaravelLocalization": "Mcamara\\LaravelLocalization\\Facades\\LaravelLocalization"
- },
- "providers": [
- "Mcamara\\LaravelLocalization\\LaravelLocalizationServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-0": {
- "Mcamara\\LaravelLocalization": "src/"
- },
- "classmap": []
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marc Cámara",
- "email": "mcamara88@gmail.com",
- "role": "Developer"
- }
- ],
- "description": "Easy localization for Laravel",
- "homepage": "https://github.com/mcamara/laravel-localization",
- "keywords": [
- "laravel",
- "localization",
- "php"
- ],
- "support": {
- "issues": "https://github.com/mcamara/laravel-localization/issues",
- "source": "https://github.com/mcamara/laravel-localization/tree/v2.2.1"
- },
- "funding": [
- {
- "url": "https://github.com/iwasherefirst2",
- "type": "github"
- },
- {
- "url": "https://github.com/mcamara",
- "type": "github"
- }
- ],
- "time": "2024-11-27T21:06:34+00:00"
- },
{
"name": "mckenziearts/blade-untitledui-icons",
"version": "v1.3.1",
diff --git a/config/laravellocalization.php b/config/laravellocalization.php
deleted file mode 100644
index 3064769b..00000000
--- a/config/laravellocalization.php
+++ /dev/null
@@ -1,352 +0,0 @@
- [
- //'ace' => ['name' => 'Achinese', 'script' => 'Latn', 'native' => 'Aceh', 'regional' => ''],
- //'af' => ['name' => 'Afrikaans', 'script' => 'Latn', 'native' => 'Afrikaans', 'regional' => 'af_ZA'],
- //'agq' => ['name' => 'Aghem', 'script' => 'Latn', 'native' => 'Aghem', 'regional' => ''],
- //'ak' => ['name' => 'Akan', 'script' => 'Latn', 'native' => 'Akan', 'regional' => 'ak_GH'],
- //'an' => ['name' => 'Aragonese', 'script' => 'Latn', 'native' => 'aragonés', 'regional' => 'an_ES'],
- //'cch' => ['name' => 'Atsam', 'script' => 'Latn', 'native' => 'Atsam', 'regional' => ''],
- //'gn' => ['name' => 'Guaraní', 'script' => 'Latn', 'native' => 'Avañe’ẽ', 'regional' => ''],
- //'ae' => ['name' => 'Avestan', 'script' => 'Latn', 'native' => 'avesta', 'regional' => ''],
- //'ay' => ['name' => 'Aymara', 'script' => 'Latn', 'native' => 'aymar aru', 'regional' => 'ay_PE'],
- //'az' => ['name' => 'Azerbaijani (Latin)', 'script' => 'Latn', 'native' => 'azərbaycanca', 'regional' => 'az_AZ'],
- //'id' => ['name' => 'Indonesian', 'script' => 'Latn', 'native' => 'Bahasa Indonesia', 'regional' => 'id_ID'],
- //'ms' => ['name' => 'Malay', 'script' => 'Latn', 'native' => 'Bahasa Melayu', 'regional' => 'ms_MY'],
- //'bm' => ['name' => 'Bambara', 'script' => 'Latn', 'native' => 'bamanakan', 'regional' => ''],
- //'jv' => ['name' => 'Javanese (Latin)', 'script' => 'Latn', 'native' => 'Basa Jawa', 'regional' => ''],
- //'su' => ['name' => 'Sundanese', 'script' => 'Latn', 'native' => 'Basa Sunda', 'regional' => ''],
- //'bh' => ['name' => 'Bihari', 'script' => 'Latn', 'native' => 'Bihari', 'regional' => ''],
- //'bi' => ['name' => 'Bislama', 'script' => 'Latn', 'native' => 'Bislama', 'regional' => ''],
- //'nb' => ['name' => 'Norwegian Bokmål', 'script' => 'Latn', 'native' => 'Bokmål', 'regional' => 'nb_NO'],
- //'bs' => ['name' => 'Bosnian', 'script' => 'Latn', 'native' => 'bosanski', 'regional' => 'bs_BA'],
- //'br' => ['name' => 'Breton', 'script' => 'Latn', 'native' => 'brezhoneg', 'regional' => 'br_FR'],
- //'ca' => ['name' => 'Catalan', 'script' => 'Latn', 'native' => 'català', 'regional' => 'ca_ES'],
- //'ch' => ['name' => 'Chamorro', 'script' => 'Latn', 'native' => 'Chamoru', 'regional' => ''],
- //'ny' => ['name' => 'Chewa', 'script' => 'Latn', 'native' => 'chiCheŵa', 'regional' => ''],
- //'kde' => ['name' => 'Makonde', 'script' => 'Latn', 'native' => 'Chimakonde', 'regional' => ''],
- //'sn' => ['name' => 'Shona', 'script' => 'Latn', 'native' => 'chiShona', 'regional' => ''],
- //'co' => ['name' => 'Corsican', 'script' => 'Latn', 'native' => 'corsu', 'regional' => ''],
- //'cy' => ['name' => 'Welsh', 'script' => 'Latn', 'native' => 'Cymraeg', 'regional' => 'cy_GB'],
- //'da' => ['name' => 'Danish', 'script' => 'Latn', 'native' => 'dansk', 'regional' => 'da_DK'],
- //'se' => ['name' => 'Northern Sami', 'script' => 'Latn', 'native' => 'davvisámegiella', 'regional' => 'se_NO'],
- //'de' => ['name' => 'German', 'script' => 'Latn', 'native' => 'Deutsch', 'regional' => 'de_DE'],
- //'luo' => ['name' => 'Luo', 'script' => 'Latn', 'native' => 'Dholuo', 'regional' => ''],
- //'nv' => ['name' => 'Navajo', 'script' => 'Latn', 'native' => 'Diné bizaad', 'regional' => ''],
- //'dua' => ['name' => 'Duala', 'script' => 'Latn', 'native' => 'duálá', 'regional' => ''],
- //'et' => ['name' => 'Estonian', 'script' => 'Latn', 'native' => 'eesti', 'regional' => 'et_EE'],
- //'na' => ['name' => 'Nauru', 'script' => 'Latn', 'native' => 'Ekakairũ Naoero', 'regional' => ''],
- //'guz' => ['name' => 'Ekegusii', 'script' => 'Latn', 'native' => 'Ekegusii', 'regional' => ''],
- 'en' => ['name' => 'English', 'script' => 'Latn', 'native' => 'English', 'regional' => 'en_GB'],
- //'en-AU' => ['name' => 'Australian English', 'script' => 'Latn', 'native' => 'Australian English', 'regional' => 'en_AU'],
- //'en-GB' => ['name' => 'British English', 'script' => 'Latn', 'native' => 'British English', 'regional' => 'en_GB'],
- //'en-CA' => ['name' => 'Canadian English', 'script' => 'Latn', 'native' => 'Canadian English', 'regional' => 'en_CA'],
- //'en-US' => ['name' => 'U.S. English', 'script' => 'Latn', 'native' => 'U.S. English', 'regional' => 'en_US'],
- //'es' => ['name' => 'Spanish', 'script' => 'Latn', 'native' => 'español', 'regional' => 'es_ES'],
- //'eo' => ['name' => 'Esperanto', 'script' => 'Latn', 'native' => 'esperanto', 'regional' => ''],
- //'eu' => ['name' => 'Basque', 'script' => 'Latn', 'native' => 'euskara', 'regional' => 'eu_ES'],
- //'ewo' => ['name' => 'Ewondo', 'script' => 'Latn', 'native' => 'ewondo', 'regional' => ''],
- //'ee' => ['name' => 'Ewe', 'script' => 'Latn', 'native' => 'eʋegbe', 'regional' => ''],
- //'fil' => ['name' => 'Filipino', 'script' => 'Latn', 'native' => 'Filipino', 'regional' => 'fil_PH'],
- 'fr' => ['name' => 'French', 'script' => 'Latn', 'native' => 'français', 'regional' => 'fr_FR'],
- //'fr-CA' => ['name' => 'Canadian French', 'script' => 'Latn', 'native' => 'français canadien', 'regional' => 'fr_CA'],
- //'fy' => ['name' => 'Western Frisian', 'script' => 'Latn', 'native' => 'frysk', 'regional' => 'fy_DE'],
- //'fur' => ['name' => 'Friulian', 'script' => 'Latn', 'native' => 'furlan', 'regional' => 'fur_IT'],
- //'fo' => ['name' => 'Faroese', 'script' => 'Latn', 'native' => 'føroyskt', 'regional' => 'fo_FO'],
- //'gaa' => ['name' => 'Ga', 'script' => 'Latn', 'native' => 'Ga', 'regional' => ''],
- //'ga' => ['name' => 'Irish', 'script' => 'Latn', 'native' => 'Gaeilge', 'regional' => 'ga_IE'],
- //'gv' => ['name' => 'Manx', 'script' => 'Latn', 'native' => 'Gaelg', 'regional' => 'gv_GB'],
- //'sm' => ['name' => 'Samoan', 'script' => 'Latn', 'native' => 'Gagana fa’a Sāmoa', 'regional' => ''],
- //'gl' => ['name' => 'Galician', 'script' => 'Latn', 'native' => 'galego', 'regional' => 'gl_ES'],
- //'ki' => ['name' => 'Kikuyu', 'script' => 'Latn', 'native' => 'Gikuyu', 'regional' => ''],
- //'gd' => ['name' => 'Scottish Gaelic', 'script' => 'Latn', 'native' => 'Gàidhlig', 'regional' => 'gd_GB'],
- //'ha' => ['name' => 'Hausa', 'script' => 'Latn', 'native' => 'Hausa', 'regional' => 'ha_NG'],
- //'bez' => ['name' => 'Bena', 'script' => 'Latn', 'native' => 'Hibena', 'regional' => ''],
- //'ho' => ['name' => 'Hiri Motu', 'script' => 'Latn', 'native' => 'Hiri Motu', 'regional' => ''],
- //'hr' => ['name' => 'Croatian', 'script' => 'Latn', 'native' => 'hrvatski', 'regional' => 'hr_HR'],
- //'bem' => ['name' => 'Bemba', 'script' => 'Latn', 'native' => 'Ichibemba', 'regional' => 'bem_ZM'],
- //'io' => ['name' => 'Ido', 'script' => 'Latn', 'native' => 'Ido', 'regional' => ''],
- //'ig' => ['name' => 'Igbo', 'script' => 'Latn', 'native' => 'Igbo', 'regional' => 'ig_NG'],
- //'rn' => ['name' => 'Rundi', 'script' => 'Latn', 'native' => 'Ikirundi', 'regional' => ''],
- //'ia' => ['name' => 'Interlingua', 'script' => 'Latn', 'native' => 'interlingua', 'regional' => 'ia_FR'],
- //'iu-Latn' => ['name' => 'Inuktitut (Latin)', 'script' => 'Latn', 'native' => 'Inuktitut', 'regional' => 'iu_CA'],
- //'sbp' => ['name' => 'Sileibi', 'script' => 'Latn', 'native' => 'Ishisangu', 'regional' => ''],
- //'nd' => ['name' => 'North Ndebele', 'script' => 'Latn', 'native' => 'isiNdebele', 'regional' => ''],
- //'nr' => ['name' => 'South Ndebele', 'script' => 'Latn', 'native' => 'isiNdebele', 'regional' => 'nr_ZA'],
- //'xh' => ['name' => 'Xhosa', 'script' => 'Latn', 'native' => 'isiXhosa', 'regional' => 'xh_ZA'],
- //'zu' => ['name' => 'Zulu', 'script' => 'Latn', 'native' => 'isiZulu', 'regional' => 'zu_ZA'],
- //'it' => ['name' => 'Italian', 'script' => 'Latn', 'native' => 'italiano', 'regional' => 'it_IT'],
- //'ik' => ['name' => 'Inupiaq', 'script' => 'Latn', 'native' => 'Iñupiaq', 'regional' => 'ik_CA'],
- //'dyo' => ['name' => 'Jola-Fonyi', 'script' => 'Latn', 'native' => 'joola', 'regional' => ''],
- //'kea' => ['name' => 'Kabuverdianu', 'script' => 'Latn', 'native' => 'kabuverdianu', 'regional' => ''],
- //'kaj' => ['name' => 'Jju', 'script' => 'Latn', 'native' => 'Kaje', 'regional' => ''],
- //'mh' => ['name' => 'Marshallese', 'script' => 'Latn', 'native' => 'Kajin M̧ajeļ', 'regional' => 'mh_MH'],
- //'kl' => ['name' => 'Kalaallisut', 'script' => 'Latn', 'native' => 'kalaallisut', 'regional' => 'kl_GL'],
- //'kln' => ['name' => 'Kalenjin', 'script' => 'Latn', 'native' => 'Kalenjin', 'regional' => ''],
- //'kr' => ['name' => 'Kanuri', 'script' => 'Latn', 'native' => 'Kanuri', 'regional' => ''],
- //'kcg' => ['name' => 'Tyap', 'script' => 'Latn', 'native' => 'Katab', 'regional' => ''],
- //'kw' => ['name' => 'Cornish', 'script' => 'Latn', 'native' => 'kernewek', 'regional' => 'kw_GB'],
- //'naq' => ['name' => 'Nama', 'script' => 'Latn', 'native' => 'Khoekhoegowab', 'regional' => ''],
- //'rof' => ['name' => 'Rombo', 'script' => 'Latn', 'native' => 'Kihorombo', 'regional' => ''],
- //'kam' => ['name' => 'Kamba', 'script' => 'Latn', 'native' => 'Kikamba', 'regional' => ''],
- //'kg' => ['name' => 'Kongo', 'script' => 'Latn', 'native' => 'Kikongo', 'regional' => ''],
- //'jmc' => ['name' => 'Machame', 'script' => 'Latn', 'native' => 'Kimachame', 'regional' => ''],
- //'rw' => ['name' => 'Kinyarwanda', 'script' => 'Latn', 'native' => 'Kinyarwanda', 'regional' => 'rw_RW'],
- //'asa' => ['name' => 'Kipare', 'script' => 'Latn', 'native' => 'Kipare', 'regional' => ''],
- //'rwk' => ['name' => 'Rwa', 'script' => 'Latn', 'native' => 'Kiruwa', 'regional' => ''],
- //'saq' => ['name' => 'Samburu', 'script' => 'Latn', 'native' => 'Kisampur', 'regional' => ''],
- //'ksb' => ['name' => 'Shambala', 'script' => 'Latn', 'native' => 'Kishambaa', 'regional' => ''],
- //'swc' => ['name' => 'Congo Swahili', 'script' => 'Latn', 'native' => 'Kiswahili ya Kongo', 'regional' => ''],
- //'sw' => ['name' => 'Swahili', 'script' => 'Latn', 'native' => 'Kiswahili', 'regional' => 'sw_KE'],
- //'dav' => ['name' => 'Dawida', 'script' => 'Latn', 'native' => 'Kitaita', 'regional' => ''],
- //'teo' => ['name' => 'Teso', 'script' => 'Latn', 'native' => 'Kiteso', 'regional' => ''],
- //'khq' => ['name' => 'Koyra Chiini', 'script' => 'Latn', 'native' => 'Koyra ciini', 'regional' => ''],
- //'ses' => ['name' => 'Songhay', 'script' => 'Latn', 'native' => 'Koyraboro senni', 'regional' => ''],
- //'mfe' => ['name' => 'Morisyen', 'script' => 'Latn', 'native' => 'kreol morisien', 'regional' => ''],
- //'ht' => ['name' => 'Haitian', 'script' => 'Latn', 'native' => 'Kreyòl ayisyen', 'regional' => 'ht_HT'],
- //'kj' => ['name' => 'Kuanyama', 'script' => 'Latn', 'native' => 'Kwanyama', 'regional' => ''],
- //'ksh' => ['name' => 'Kölsch', 'script' => 'Latn', 'native' => 'Kölsch', 'regional' => ''],
- //'ebu' => ['name' => 'Kiembu', 'script' => 'Latn', 'native' => 'Kĩembu', 'regional' => ''],
- //'mer' => ['name' => 'Kimîîru', 'script' => 'Latn', 'native' => 'Kĩmĩrũ', 'regional' => ''],
- //'lag' => ['name' => 'Langi', 'script' => 'Latn', 'native' => 'Kɨlaangi', 'regional' => ''],
- //'lah' => ['name' => 'Lahnda', 'script' => 'Latn', 'native' => 'Lahnda', 'regional' => ''],
- //'la' => ['name' => 'Latin', 'script' => 'Latn', 'native' => 'latine', 'regional' => ''],
- //'lv' => ['name' => 'Latvian', 'script' => 'Latn', 'native' => 'latviešu', 'regional' => 'lv_LV'],
- //'to' => ['name' => 'Tongan', 'script' => 'Latn', 'native' => 'lea fakatonga', 'regional' => ''],
- //'lt' => ['name' => 'Lithuanian', 'script' => 'Latn', 'native' => 'lietuvių', 'regional' => 'lt_LT'],
- //'li' => ['name' => 'Limburgish', 'script' => 'Latn', 'native' => 'Limburgs', 'regional' => 'li_BE'],
- //'ln' => ['name' => 'Lingala', 'script' => 'Latn', 'native' => 'lingála', 'regional' => ''],
- //'lg' => ['name' => 'Ganda', 'script' => 'Latn', 'native' => 'Luganda', 'regional' => 'lg_UG'],
- //'luy' => ['name' => 'Oluluyia', 'script' => 'Latn', 'native' => 'Luluhia', 'regional' => ''],
- //'lb' => ['name' => 'Luxembourgish', 'script' => 'Latn', 'native' => 'Lëtzebuergesch', 'regional' => 'lb_LU'],
- //'hu' => ['name' => 'Hungarian', 'script' => 'Latn', 'native' => 'magyar', 'regional' => 'hu_HU'],
- //'mgh' => ['name' => 'Makhuwa-Meetto', 'script' => 'Latn', 'native' => 'Makua', 'regional' => ''],
- //'mg' => ['name' => 'Malagasy', 'script' => 'Latn', 'native' => 'Malagasy', 'regional' => 'mg_MG'],
- //'mt' => ['name' => 'Maltese', 'script' => 'Latn', 'native' => 'Malti', 'regional' => 'mt_MT'],
- //'mtr' => ['name' => 'Mewari', 'script' => 'Latn', 'native' => 'Mewari', 'regional' => ''],
- //'mua' => ['name' => 'Mundang', 'script' => 'Latn', 'native' => 'Mundang', 'regional' => ''],
- //'mi' => ['name' => 'Māori', 'script' => 'Latn', 'native' => 'Māori', 'regional' => 'mi_NZ'],
- //'nl' => ['name' => 'Dutch', 'script' => 'Latn', 'native' => 'Nederlands', 'regional' => 'nl_NL'],
- //'nmg' => ['name' => 'Kwasio', 'script' => 'Latn', 'native' => 'ngumba', 'regional' => ''],
- //'yav' => ['name' => 'Yangben', 'script' => 'Latn', 'native' => 'nuasue', 'regional' => ''],
- //'nn' => ['name' => 'Norwegian Nynorsk', 'script' => 'Latn', 'native' => 'nynorsk', 'regional' => 'nn_NO'],
- //'oc' => ['name' => 'Occitan', 'script' => 'Latn', 'native' => 'occitan', 'regional' => 'oc_FR'],
- //'ang' => ['name' => 'Old English', 'script' => 'Runr', 'native' => 'Old English', 'regional' => ''],
- //'xog' => ['name' => 'Soga', 'script' => 'Latn', 'native' => 'Olusoga', 'regional' => ''],
- //'om' => ['name' => 'Oromo', 'script' => 'Latn', 'native' => 'Oromoo', 'regional' => 'om_ET'],
- //'ng' => ['name' => 'Ndonga', 'script' => 'Latn', 'native' => 'OshiNdonga', 'regional' => ''],
- //'hz' => ['name' => 'Herero', 'script' => 'Latn', 'native' => 'Otjiherero', 'regional' => ''],
- //'uz-Latn' => ['name' => 'Uzbek (Latin)', 'script' => 'Latn', 'native' => 'oʼzbekcha', 'regional' => 'uz_UZ'],
- //'nds' => ['name' => 'Low German', 'script' => 'Latn', 'native' => 'Plattdüütsch', 'regional' => 'nds_DE'],
- //'pl' => ['name' => 'Polish', 'script' => 'Latn', 'native' => 'polski', 'regional' => 'pl_PL'],
- //'pt' => ['name' => 'Portuguese', 'script' => 'Latn', 'native' => 'português', 'regional' => 'pt_PT'],
- //'pt-BR' => ['name' => 'Brazilian Portuguese', 'script' => 'Latn', 'native' => 'português do Brasil', 'regional' => 'pt_BR'],
- //'ff' => ['name' => 'Fulah', 'script' => 'Latn', 'native' => 'Pulaar', 'regional' => 'ff_SN'],
- //'pi' => ['name' => 'Pahari-Potwari', 'script' => 'Latn', 'native' => 'Pāli', 'regional' => ''],
- //'aa' => ['name' => 'Afar', 'script' => 'Latn', 'native' => 'Qafar', 'regional' => 'aa_ER'],
- //'ty' => ['name' => 'Tahitian', 'script' => 'Latn', 'native' => 'Reo Māohi', 'regional' => ''],
- //'ksf' => ['name' => 'Bafia', 'script' => 'Latn', 'native' => 'rikpa', 'regional' => ''],
- //'ro' => ['name' => 'Romanian', 'script' => 'Latn', 'native' => 'română', 'regional' => 'ro_RO'],
- //'cgg' => ['name' => 'Chiga', 'script' => 'Latn', 'native' => 'Rukiga', 'regional' => ''],
- //'rm' => ['name' => 'Romansh', 'script' => 'Latn', 'native' => 'rumantsch', 'regional' => ''],
- //'qu' => ['name' => 'Quechua', 'script' => 'Latn', 'native' => 'Runa Simi', 'regional' => ''],
- //'nyn' => ['name' => 'Nyankole', 'script' => 'Latn', 'native' => 'Runyankore', 'regional' => ''],
- //'ssy' => ['name' => 'Saho', 'script' => 'Latn', 'native' => 'Saho', 'regional' => ''],
- //'sc' => ['name' => 'Sardinian', 'script' => 'Latn', 'native' => 'sardu', 'regional' => 'sc_IT'],
- //'de-CH' => ['name' => 'Swiss High German', 'script' => 'Latn', 'native' => 'Schweizer Hochdeutsch', 'regional' => 'de_CH'],
- //'gsw' => ['name' => 'Swiss German', 'script' => 'Latn', 'native' => 'Schwiizertüütsch', 'regional' => ''],
- //'trv' => ['name' => 'Taroko', 'script' => 'Latn', 'native' => 'Seediq', 'regional' => ''],
- //'seh' => ['name' => 'Sena', 'script' => 'Latn', 'native' => 'sena', 'regional' => ''],
- //'nso' => ['name' => 'Northern Sotho', 'script' => 'Latn', 'native' => 'Sesotho sa Leboa', 'regional' => 'nso_ZA'],
- //'st' => ['name' => 'Southern Sotho', 'script' => 'Latn', 'native' => 'Sesotho', 'regional' => 'st_ZA'],
- //'tn' => ['name' => 'Tswana', 'script' => 'Latn', 'native' => 'Setswana', 'regional' => 'tn_ZA'],
- //'sq' => ['name' => 'Albanian', 'script' => 'Latn', 'native' => 'shqip', 'regional' => 'sq_AL'],
- //'sid' => ['name' => 'Sidamo', 'script' => 'Latn', 'native' => 'Sidaamu Afo', 'regional' => 'sid_ET'],
- //'ss' => ['name' => 'Swati', 'script' => 'Latn', 'native' => 'Siswati', 'regional' => 'ss_ZA'],
- //'sk' => ['name' => 'Slovak', 'script' => 'Latn', 'native' => 'slovenčina', 'regional' => 'sk_SK'],
- //'sl' => ['name' => 'Slovene', 'script' => 'Latn', 'native' => 'slovenščina', 'regional' => 'sl_SI'],
- //'so' => ['name' => 'Somali', 'script' => 'Latn', 'native' => 'Soomaali', 'regional' => 'so_SO'],
- //'sr-Latn' => ['name' => 'Serbian (Latin)', 'script' => 'Latn', 'native' => 'Srpski', 'regional' => 'sr_RS'],
- //'sh' => ['name' => 'Serbo-Croatian', 'script' => 'Latn', 'native' => 'srpskohrvatski', 'regional' => ''],
- //'fi' => ['name' => 'Finnish', 'script' => 'Latn', 'native' => 'suomi', 'regional' => 'fi_FI'],
- //'sv' => ['name' => 'Swedish', 'script' => 'Latn', 'native' => 'svenska', 'regional' => 'sv_SE'],
- //'sg' => ['name' => 'Sango', 'script' => 'Latn', 'native' => 'Sängö', 'regional' => ''],
- //'tl' => ['name' => 'Tagalog', 'script' => 'Latn', 'native' => 'Tagalog', 'regional' => 'tl_PH'],
- //'tzm-Latn' => ['name' => 'Central Atlas Tamazight (Latin)', 'script' => 'Latn', 'native' => 'Tamazight', 'regional' => ''],
- //'kab' => ['name' => 'Kabyle', 'script' => 'Latn', 'native' => 'Taqbaylit', 'regional' => 'kab_DZ'],
- //'twq' => ['name' => 'Tasawaq', 'script' => 'Latn', 'native' => 'Tasawaq senni', 'regional' => ''],
- //'shi' => ['name' => 'Tachelhit (Latin)', 'script' => 'Latn', 'native' => 'Tashelhit', 'regional' => ''],
- //'nus' => ['name' => 'Nuer', 'script' => 'Latn', 'native' => 'Thok Nath', 'regional' => ''],
- //'vi' => ['name' => 'Vietnamese', 'script' => 'Latn', 'native' => 'Tiếng Việt', 'regional' => 'vi_VN'],
- //'tg-Latn' => ['name' => 'Tajik (Latin)', 'script' => 'Latn', 'native' => 'tojikī', 'regional' => 'tg_TJ'],
- //'lu' => ['name' => 'Luba-Katanga', 'script' => 'Latn', 'native' => 'Tshiluba', 'regional' => 've_ZA'],
- //'ve' => ['name' => 'Venda', 'script' => 'Latn', 'native' => 'Tshivenḓa', 'regional' => ''],
- //'tw' => ['name' => 'Twi', 'script' => 'Latn', 'native' => 'Twi', 'regional' => ''],
- //'tr' => ['name' => 'Turkish', 'script' => 'Latn', 'native' => 'Türkçe', 'regional' => 'tr_TR'],
- //'ale' => ['name' => 'Aleut', 'script' => 'Latn', 'native' => 'Unangax tunuu', 'regional' => ''],
- //'ca-valencia' => ['name' => 'Valencian', 'script' => 'Latn', 'native' => 'valencià', 'regional' => ''],
- //'vai-Latn' => ['name' => 'Vai (Latin)', 'script' => 'Latn', 'native' => 'Viyamíĩ', 'regional' => ''],
- //'vo' => ['name' => 'Volapük', 'script' => 'Latn', 'native' => 'Volapük', 'regional' => ''],
- //'fj' => ['name' => 'Fijian', 'script' => 'Latn', 'native' => 'vosa Vakaviti', 'regional' => ''],
- //'wa' => ['name' => 'Walloon', 'script' => 'Latn', 'native' => 'Walon', 'regional' => 'wa_BE'],
- //'wae' => ['name' => 'Walser', 'script' => 'Latn', 'native' => 'Walser', 'regional' => 'wae_CH'],
- //'wen' => ['name' => 'Sorbian', 'script' => 'Latn', 'native' => 'Wendic', 'regional' => ''],
- //'wo' => ['name' => 'Wolof', 'script' => 'Latn', 'native' => 'Wolof', 'regional' => 'wo_SN'],
- //'ts' => ['name' => 'Tsonga', 'script' => 'Latn', 'native' => 'Xitsonga', 'regional' => 'ts_ZA'],
- //'dje' => ['name' => 'Zarma', 'script' => 'Latn', 'native' => 'Zarmaciine', 'regional' => ''],
- //'yo' => ['name' => 'Yoruba', 'script' => 'Latn', 'native' => 'Èdè Yorùbá', 'regional' => 'yo_NG'],
- // 'de-AT' => ['name' => 'Austrian German', 'script' => 'Latn', 'native' => 'Österreichisches Deutsch', 'regional' => 'de_AT'],
- //'is' => ['name' => 'Icelandic', 'script' => 'Latn', 'native' => 'íslenska', 'regional' => 'is_IS'],
- //'cs' => ['name' => 'Czech', 'script' => 'Latn', 'native' => 'čeština', 'regional' => 'cs_CZ'],
- //'bas' => ['name' => 'Basa', 'script' => 'Latn', 'native' => 'Ɓàsàa', 'regional' => ''],
- //'mas' => ['name' => 'Masai', 'script' => 'Latn', 'native' => 'ɔl-Maa', 'regional' => ''],
- //'haw' => ['name' => 'Hawaiian', 'script' => 'Latn', 'native' => 'ʻŌlelo Hawaiʻi', 'regional' => ''],
- //'el' => ['name' => 'Greek', 'script' => 'Grek', 'native' => 'Ελληνικά', 'regional' => 'el_GR'],
- //'uz' => ['name' => 'Uzbek (Cyrillic)', 'script' => 'Cyrl', 'native' => 'Ўзбек', 'regional' => 'uz_UZ'],
- //'az-Cyrl' => ['name' => 'Azerbaijani (Cyrillic)', 'script' => 'Cyrl', 'native' => 'Азәрбајҹан', 'regional' => 'uz_UZ'],
- //'ab' => ['name' => 'Abkhazian', 'script' => 'Cyrl', 'native' => 'Аҧсуа', 'regional' => ''],
- //'os' => ['name' => 'Ossetic', 'script' => 'Cyrl', 'native' => 'Ирон', 'regional' => 'os_RU'],
- //'ky' => ['name' => 'Kyrgyz', 'script' => 'Cyrl', 'native' => 'Кыргыз', 'regional' => 'ky_KG'],
- //'sr' => ['name' => 'Serbian (Cyrillic)', 'script' => 'Cyrl', 'native' => 'Српски', 'regional' => 'sr_RS'],
- //'av' => ['name' => 'Avaric', 'script' => 'Cyrl', 'native' => 'авар мацӀ', 'regional' => ''],
- //'ady' => ['name' => 'Adyghe', 'script' => 'Cyrl', 'native' => 'адыгэбзэ', 'regional' => ''],
- //'ba' => ['name' => 'Bashkir', 'script' => 'Cyrl', 'native' => 'башҡорт теле', 'regional' => ''],
- //'be' => ['name' => 'Belarusian', 'script' => 'Cyrl', 'native' => 'беларуская', 'regional' => 'be_BY'],
- //'bg' => ['name' => 'Bulgarian', 'script' => 'Cyrl', 'native' => 'български', 'regional' => 'bg_BG'],
- //'kv' => ['name' => 'Komi', 'script' => 'Cyrl', 'native' => 'коми кыв', 'regional' => ''],
- //'mk' => ['name' => 'Macedonian', 'script' => 'Cyrl', 'native' => 'македонски', 'regional' => 'mk_MK'],
- //'mn' => ['name' => 'Mongolian (Cyrillic)', 'script' => 'Cyrl', 'native' => 'монгол', 'regional' => 'mn_MN'],
- //'ce' => ['name' => 'Chechen', 'script' => 'Cyrl', 'native' => 'нохчийн мотт', 'regional' => 'ce_RU'],
- //'ru' => ['name' => 'Russian', 'script' => 'Cyrl', 'native' => 'русский', 'regional' => 'ru_RU'],
- //'sah' => ['name' => 'Yakut', 'script' => 'Cyrl', 'native' => 'саха тыла', 'regional' => ''],
- //'tt' => ['name' => 'Tatar', 'script' => 'Cyrl', 'native' => 'татар теле', 'regional' => 'tt_RU'],
- //'tg' => ['name' => 'Tajik (Cyrillic)', 'script' => 'Cyrl', 'native' => 'тоҷикӣ', 'regional' => 'tg_TJ'],
- //'tk' => ['name' => 'Turkmen', 'script' => 'Cyrl', 'native' => 'түркменче', 'regional' => 'tk_TM'],
- //'uk' => ['name' => 'Ukrainian', 'script' => 'Cyrl', 'native' => 'українська', 'regional' => 'uk_UA'],
- //'cv' => ['name' => 'Chuvash', 'script' => 'Cyrl', 'native' => 'чӑваш чӗлхи', 'regional' => 'cv_RU'],
- //'cu' => ['name' => 'Church Slavic', 'script' => 'Cyrl', 'native' => 'ѩзыкъ словѣньскъ', 'regional' => ''],
- //'kk' => ['name' => 'Kazakh', 'script' => 'Cyrl', 'native' => 'қазақ тілі', 'regional' => 'kk_KZ'],
- //'hy' => ['name' => 'Armenian', 'script' => 'Armn', 'native' => 'Հայերեն', 'regional' => 'hy_AM'],
- //'yi' => ['name' => 'Yiddish', 'script' => 'Hebr', 'native' => 'ייִדיש', 'regional' => 'yi_US'],
- //'he' => ['name' => 'Hebrew', 'script' => 'Hebr', 'native' => 'עברית', 'regional' => 'he_IL'],
- //'ug' => ['name' => 'Uyghur', 'script' => 'Arab', 'native' => 'ئۇيغۇرچە', 'regional' => 'ug_CN'],
- //'ur' => ['name' => 'Urdu', 'script' => 'Arab', 'native' => 'اردو', 'regional' => 'ur_PK'],
- //'ar' => ['name' => 'Arabic', 'script' => 'Arab', 'native' => 'العربية', 'regional' => 'ar_AE'],
- //'uz-Arab' => ['name' => 'Uzbek (Arabic)', 'script' => 'Arab', 'native' => 'اۉزبېک', 'regional' => ''],
- //'tg-Arab' => ['name' => 'Tajik (Arabic)', 'script' => 'Arab', 'native' => 'تاجیکی', 'regional' => 'tg_TJ'],
- //'sd' => ['name' => 'Sindhi', 'script' => 'Arab', 'native' => 'سنڌي', 'regional' => 'sd_IN'],
- //'fa' => ['name' => 'Persian', 'script' => 'Arab', 'native' => 'فارسی', 'regional' => 'fa_IR'],
- //'pa-Arab' => ['name' => 'Punjabi (Arabic)', 'script' => 'Arab', 'native' => 'پنجاب', 'regional' => 'pa_IN'],
- //'ps' => ['name' => 'Pashto', 'script' => 'Arab', 'native' => 'پښتو', 'regional' => 'ps_AF'],
- //'ks' => ['name' => 'Kashmiri (Arabic)', 'script' => 'Arab', 'native' => 'کأشُر', 'regional' => 'ks_IN'],
- //'ku' => ['name' => 'Kurdish', 'script' => 'Arab', 'native' => 'کوردی', 'regional' => 'ku_TR'],
- //'dv' => ['name' => 'Divehi', 'script' => 'Thaa', 'native' => 'ދިވެހިބަސް', 'regional' => 'dv_MV'],
- //'ks-Deva' => ['name' => 'Kashmiri (Devaganari)', 'script' => 'Deva', 'native' => 'कॉशुर', 'regional' => 'ks_IN'],
- //'kok' => ['name' => 'Konkani', 'script' => 'Deva', 'native' => 'कोंकणी', 'regional' => 'kok_IN'],
- //'doi' => ['name' => 'Dogri', 'script' => 'Deva', 'native' => 'डोगरी', 'regional' => 'doi_IN'],
- //'ne' => ['name' => 'Nepali', 'script' => 'Deva', 'native' => 'नेपाली', 'regional' => ''],
- //'pra' => ['name' => 'Prakrit', 'script' => 'Deva', 'native' => 'प्राकृत', 'regional' => ''],
- //'brx' => ['name' => 'Bodo', 'script' => 'Deva', 'native' => 'बड़ो', 'regional' => 'brx_IN'],
- //'bra' => ['name' => 'Braj', 'script' => 'Deva', 'native' => 'ब्रज भाषा', 'regional' => ''],
- //'mr' => ['name' => 'Marathi', 'script' => 'Deva', 'native' => 'मराठी', 'regional' => 'mr_IN'],
- //'mai' => ['name' => 'Maithili', 'script' => 'Tirh', 'native' => 'मैथिली', 'regional' => 'mai_IN'],
- //'raj' => ['name' => 'Rajasthani', 'script' => 'Deva', 'native' => 'राजस्थानी', 'regional' => ''],
- //'sa' => ['name' => 'Sanskrit', 'script' => 'Deva', 'native' => 'संस्कृतम्', 'regional' => 'sa_IN'],
- //'hi' => ['name' => 'Hindi', 'script' => 'Deva', 'native' => 'हिन्दी', 'regional' => 'hi_IN'],
- //'as' => ['name' => 'Assamese', 'script' => 'Beng', 'native' => 'অসমীয়া', 'regional' => 'as_IN'],
- //'bn' => ['name' => 'Bengali', 'script' => 'Beng', 'native' => 'বাংলা', 'regional' => 'bn_BD'],
- //'mni' => ['name' => 'Manipuri', 'script' => 'Beng', 'native' => 'মৈতৈ', 'regional' => 'mni_IN'],
- //'pa' => ['name' => 'Punjabi (Gurmukhi)', 'script' => 'Guru', 'native' => 'ਪੰਜਾਬੀ', 'regional' => 'pa_IN'],
- //'gu' => ['name' => 'Gujarati', 'script' => 'Gujr', 'native' => 'ગુજરાતી', 'regional' => 'gu_IN'],
- //'or' => ['name' => 'Oriya', 'script' => 'Orya', 'native' => 'ଓଡ଼ିଆ', 'regional' => 'or_IN'],
- //'ta' => ['name' => 'Tamil', 'script' => 'Taml', 'native' => 'தமிழ்', 'regional' => 'ta_IN'],
- //'te' => ['name' => 'Telugu', 'script' => 'Telu', 'native' => 'తెలుగు', 'regional' => 'te_IN'],
- //'kn' => ['name' => 'Kannada', 'script' => 'Knda', 'native' => 'ಕನ್ನಡ', 'regional' => 'kn_IN'],
- //'ml' => ['name' => 'Malayalam', 'script' => 'Mlym', 'native' => 'മലയാളം', 'regional' => 'ml_IN'],
- //'si' => ['name' => 'Sinhala', 'script' => 'Sinh', 'native' => 'සිංහල', 'regional' => 'si_LK'],
- //'th' => ['name' => 'Thai', 'script' => 'Thai', 'native' => 'ไทย', 'regional' => 'th_TH'],
- //'lo' => ['name' => 'Lao', 'script' => 'Laoo', 'native' => 'ລາວ', 'regional' => 'lo_LA'],
- //'bo' => ['name' => 'Tibetan', 'script' => 'Tibt', 'native' => 'པོད་སྐད་', 'regional' => 'bo_IN'],
- //'dz' => ['name' => 'Dzongkha', 'script' => 'Tibt', 'native' => 'རྫོང་ཁ', 'regional' => 'dz_BT'],
- //'my' => ['name' => 'Burmese', 'script' => 'Mymr', 'native' => 'မြန်မာဘာသာ', 'regional' => 'my_MM'],
- //'ka' => ['name' => 'Georgian', 'script' => 'Geor', 'native' => 'ქართული', 'regional' => 'ka_GE'],
- //'byn' => ['name' => 'Blin', 'script' => 'Ethi', 'native' => 'ብሊን', 'regional' => 'byn_ER'],
- //'tig' => ['name' => 'Tigre', 'script' => 'Ethi', 'native' => 'ትግረ', 'regional' => 'tig_ER'],
- //'ti' => ['name' => 'Tigrinya', 'script' => 'Ethi', 'native' => 'ትግርኛ', 'regional' => 'ti_ET'],
- //'am' => ['name' => 'Amharic', 'script' => 'Ethi', 'native' => 'አማርኛ', 'regional' => 'am_ET'],
- //'wal' => ['name' => 'Wolaytta', 'script' => 'Ethi', 'native' => 'ወላይታቱ', 'regional' => 'wal_ET'],
- //'chr' => ['name' => 'Cherokee', 'script' => 'Cher', 'native' => 'ᏣᎳᎩ', 'regional' => ''],
- //'iu' => ['name' => 'Inuktitut (Canadian Aboriginal Syllabics)', 'script' => 'Cans', 'native' => 'ᐃᓄᒃᑎᑐᑦ', 'regional' => 'iu_CA'],
- //'oj' => ['name' => 'Ojibwa', 'script' => 'Cans', 'native' => 'ᐊᓂᔑᓈᐯᒧᐎᓐ', 'regional' => ''],
- //'cr' => ['name' => 'Cree', 'script' => 'Cans', 'native' => 'ᓀᐦᐃᔭᐍᐏᐣ', 'regional' => ''],
- //'km' => ['name' => 'Khmer', 'script' => 'Khmr', 'native' => 'ភាសាខ្មែរ', 'regional' => 'km_KH'],
- //'mn-Mong' => ['name' => 'Mongolian (Mongolian)', 'script' => 'Mong', 'native' => 'ᠮᠣᠨᠭᠭᠣᠯ ᠬᠡᠯᠡ', 'regional' => 'mn_MN'],
- //'shi-Tfng' => ['name' => 'Tachelhit (Tifinagh)', 'script' => 'Tfng', 'native' => 'ⵜⴰⵎⴰⵣⵉⵖⵜ', 'regional' => ''],
- //'tzm' => ['name' => 'Central Atlas Tamazight (Tifinagh)','script' => 'Tfng', 'native' => 'ⵜⴰⵎⴰⵣⵉⵖⵜ', 'regional' => ''],
- //'yue' => ['name' => 'Yue', 'script' => 'Hant', 'native' => '廣州話', 'regional' => 'yue_HK'],
- //'ja' => ['name' => 'Japanese', 'script' => 'Jpan', 'native' => '日本語', 'regional' => 'ja_JP'],
- //'zh' => ['name' => 'Chinese (Simplified)', 'script' => 'Hans', 'native' => '简体中文', 'regional' => 'zh_CN'],
- //'zh-Hant' => ['name' => 'Chinese (Traditional)', 'script' => 'Hant', 'native' => '繁體中文', 'regional' => 'zh_CN'],
- //'ii' => ['name' => 'Sichuan Yi', 'script' => 'Yiii', 'native' => 'ꆈꌠꉙ', 'regional' => ''],
- //'vai' => ['name' => 'Vai (Vai)', 'script' => 'Vaii', 'native' => 'ꕙꔤ', 'regional' => ''],
- //'jv-Java' => ['name' => 'Javanese (Javanese)', 'script' => 'Java', 'native' => 'ꦧꦱꦗꦮ', 'regional' => ''],
- //'ko' => ['name' => 'Korean', 'script' => 'Hang', 'native' => '한국어', 'regional' => 'ko_KR'],
- ],
-
- // Requires middleware `LaravelSessionRedirect.php`.
- //
- // Automatically determine locale from browser (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language)
- // on first call if it's not defined in the URL. Redirect user to computed localized url.
- // For example, if users browser language is `de`, and `de` is active in the array `supportedLocales`,
- // the `/about` would be redirected to `/de/about`.
- //
- // The locale will be stored in session and only be computed from browser
- // again if the session expires.
- //
- // If false, system will take app.php locale attribute
- 'useAcceptLanguageHeader' => false,
-
- // If `hideDefaultLocaleInURL` is true, then a url without locale
- // is identical with the same url with default locale.
- // For example, if `en` is default locale, then `/en/about` and `/about`
- // would be identical.
- //
- // If in addition the middleware `LaravelLocalizationRedirectFilter` is active, then
- // every url with default locale is redirected to url without locale.
- // For example, `/en/about` would be redirected to `/about`.
- // It is recommended to use `hideDefaultLocaleInURL` only in
- // combination with the middleware `LaravelLocalizationRedirectFilter`
- // to avoid duplicate content (SEO).
- //
- // If `useAcceptLanguageHeader` is true, then the first time
- // the locale will be determined from browser and redirect to that language.
- // After that, `hideDefaultLocaleInURL` behaves as usual.
- 'hideDefaultLocaleInURL' => false,
-
- // If you want to display the locales in particular order in the language selector you should write the order here.
- //CAUTION: Please consider using the appropriate locale code otherwise it will not work
- //Example: 'localesOrder' => ['es','en'],
- 'localesOrder' => [],
-
- // If you want to use custom language URL segments like 'at' instead of 'de-AT', you can map them to allow the
- // LanguageNegotiator to assign the desired locales based on HTTP Accept Language Header. For example, if you want
- // to use 'at' instead of 'de-AT', you would map 'de-AT' to 'at' (ie. ['de-AT' => 'at']).
- 'localesMapping' => [],
-
- // Locale suffix for LC_TIME and LC_MONETARY
- // Defaults to most common ".UTF-8". Set to blank on Windows systems, change to ".utf8" on CentOS and similar.
- 'utf8suffix' => env('LARAVELLOCALIZATION_UTF8SUFFIX', '.UTF-8'),
-
- // URLs which should not be processed, e.g. '/nova', '/nova/*', '/nova-api/*' or specific application URLs
- // Defaults to []
- 'urlsIgnored' => ['/skipped'],
-
- 'httpMethodsIgnored' => ['POST', 'PUT', 'PATCH', 'DELETE'],
-];
diff --git a/routes/web.php b/routes/web.php
index fb996169..5826d270 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -11,49 +11,46 @@
use App\Http\Controllers\SponsoringController;
use App\Http\Controllers\SubscriptionController;
use Illuminate\Support\Facades\Route;
-use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
-Route::group(['prefix' => LaravelLocalization::setLocale(), 'middleware' => ['localeSessionRedirect', 'localizationRedirect', 'localeViewPath']], function (): void {
- Route::get('/', HomeController::class)->name('home');
+Route::get('/', HomeController::class)->name('home');
- // Static pages
- Route::view('a-propos', 'about')->name('about');
- Route::view('faq', 'faq')->name('faq');
- Route::view('privacy', 'privacy')->name('privacy');
- Route::view('rules', 'rules')->name('rules');
- Route::view('terms', 'terms')->name('terms');
- Route::view('slack', 'slack')->name('slack');
- Route::post('slack', SlackController::class)->name('slack.send');
- Route::post('uploads/process', [FileUploadController::class, 'process'])
- ->middleware('auth')
- ->name('uploads.process');
+// Static pages
+Route::view('a-propos', 'about')->name('about');
+Route::view('faq', 'faq')->name('faq');
+Route::view('privacy', 'privacy')->name('privacy');
+Route::view('rules', 'rules')->name('rules');
+Route::view('terms', 'terms')->name('terms');
+Route::view('slack', 'slack')->name('slack');
+Route::post('slack', SlackController::class)->name('slack.send');
+Route::post('uploads/process', [FileUploadController::class, 'process'])
+ ->middleware('auth')
+ ->name('uploads.process');
- // Social authentication
- Route::get('auth/{provider}', [OAuthController::class, 'redirectToProvider'])->name('social.auth');
- Route::get('auth/{provider}/callback', [OAuthController::class, 'handleProviderCallback']);
+// Social authentication
+Route::get('auth/{provider}', [OAuthController::class, 'redirectToProvider'])->name('social.auth');
+Route::get('auth/{provider}/callback', [OAuthController::class, 'handleProviderCallback']);
- // Articles
- Route::prefix('articles')->as('articles.')->group(base_path('routes/features/article.php'));
- Route::prefix('discussions')->as('discussions.')->group(base_path('routes/features/discussion.php'));
- Route::prefix('forum')->as('forum.')->group(base_path('routes/features/forum.php'));
+// Articles
+Route::prefix('articles')->as('articles.')->group(base_path('routes/features/article.php'));
+Route::prefix('discussions')->as('discussions.')->group(base_path('routes/features/discussion.php'));
+Route::prefix('forum')->as('forum.')->group(base_path('routes/features/forum.php'));
- // Replies
- Route::get('replyable/{id}/{type}', [ReplyAbleController::class, 'redirect'])->name('replyable');
+// Replies
+Route::get('replyable/{id}/{type}', [ReplyAbleController::class, 'redirect'])->name('replyable');
- // Subscriptions
- Route::get('subscriptions/{subscription}/unsubscribe', [SubscriptionController::class, 'unsubscribe'])
- ->name('subscriptions.unsubscribe');
- Route::get('subscribeable/{id}/{type}', [SubscriptionController::class, 'redirect'])->name('subscriptions.redirect');
+// Subscriptions
+Route::get('subscriptions/{subscription}/unsubscribe', [SubscriptionController::class, 'unsubscribe'])
+ ->name('subscriptions.unsubscribe');
+Route::get('subscribeable/{id}/{type}', [SubscriptionController::class, 'redirect'])->name('subscriptions.redirect');
- // Notifications
- Route::view('notifications', 'user.notifications')->name('notifications')->middleware(['auth', 'checkIfBanned']);
+// Notifications
+Route::view('notifications', 'user.notifications')->name('notifications')->middleware(['auth', 'checkIfBanned']);
- Route::feeds();
+Route::feeds();
- Route::get('sponsors', [SponsoringController::class, 'sponsors'])->name('sponsors');
- Route::get('callback-payment', NotchPayCallBackController::class)->name('notchpay-callback');
+Route::get('sponsors', [SponsoringController::class, 'sponsors'])->name('sponsors');
+Route::get('callback-payment', NotchPayCallBackController::class)->name('notchpay-callback');
- require __DIR__.'/features/account.php';
+require __DIR__.'/features/account.php';
- require __DIR__.'/auth.php';
-});
+require __DIR__.'/auth.php';
From db2b71c202c3f98ec85f214bf1fdf8b30d1612dc Mon Sep 17 00:00:00 2001
From: Chri$
Date: Sat, 7 Dec 2024 08:45:39 +0100
Subject: [PATCH 14/15] fix:[lar-18] create thread test with locale and set
local app
---
tests/Feature/Livewire/Pages/Forum/IndexTest.php | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/tests/Feature/Livewire/Pages/Forum/IndexTest.php b/tests/Feature/Livewire/Pages/Forum/IndexTest.php
index 88dcd159..ccdb8d37 100644
--- a/tests/Feature/Livewire/Pages/Forum/IndexTest.php
+++ b/tests/Feature/Livewire/Pages/Forum/IndexTest.php
@@ -5,6 +5,7 @@
use App\Livewire\Pages\Forum\Index;
use App\Models\Thread;
use Livewire\Livewire;
+use Illuminate\Support\Facades\App;
use function Pest\Laravel\get;
@@ -18,7 +19,8 @@
it('forum page renders views with threads', function (): void {
get(route('forum.index'))->assertOk();
- Thread::factory()->count(50)->create();
+ Thread::factory()->count(50)->create(['locale' => 'fr']);
+ App::setLocale('fr');
Livewire::test(Index::class)
->assertViewHas('threads', fn ($threads) => count($threads) === 30)
From 4e91554c60563e64732bdcd0d164cfea46c39d21 Mon Sep 17 00:00:00 2001
From: Chri$
Date: Sat, 7 Dec 2024 09:01:12 +0100
Subject: [PATCH 15/15] fix:[lar-18] apply lint
---
tests/Feature/Livewire/Pages/Forum/IndexTest.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/Feature/Livewire/Pages/Forum/IndexTest.php b/tests/Feature/Livewire/Pages/Forum/IndexTest.php
index ccdb8d37..1fb42231 100644
--- a/tests/Feature/Livewire/Pages/Forum/IndexTest.php
+++ b/tests/Feature/Livewire/Pages/Forum/IndexTest.php
@@ -4,8 +4,8 @@
use App\Livewire\Pages\Forum\Index;
use App\Models\Thread;
+use Illuminate\Support\Facades\App;
use Livewire\Livewire;
-use Illuminate\Support\Facades\App;
use function Pest\Laravel\get;