Hotfix: Updating LocaleMiddleware to handle more than 2 languages
This commit is contained in:
@@ -105,6 +105,33 @@ $language = $request->attributes->get('language'); // Lunar\Models\Language in
|
||||
|
||||
Use `$language->id` when querying Lunar's translatable content (e.g. `Url::where('language_id', ...)`).
|
||||
|
||||
### Shared view data — language switcher and `hreflang` tags
|
||||
|
||||
The middleware also shares two variables with every view, via `View::share()`, so a layout's
|
||||
language switcher or `hreflang` tags don't have to recompute the language list themselves:
|
||||
|
||||
```blade
|
||||
{{-- current locale --}}
|
||||
{{ $currentLocale }} {{-- e.g. "el" --}}
|
||||
|
||||
{{-- every OTHER configured language, each with its own URL for the current page --}}
|
||||
@foreach ($altLocales as $altLocale)
|
||||
<a href="{{ $altLocale['url'] }}" hreflang="{{ $altLocale['code'] }}">{{ $altLocale['name'] }}</a>
|
||||
@endforeach
|
||||
```
|
||||
|
||||
`$altLocales` is a **collection**, not a single value — deliberately, so it scales to any number
|
||||
of configured languages rather than assuming exactly two. Each entry is a plain array:
|
||||
|
||||
| Key | Description |
|
||||
|---|---|
|
||||
| `code` | The language's `Lunar\Models\Language::code` (e.g. `en`) |
|
||||
| `name` | The language's display name |
|
||||
| `url` | The **current route**, re-generated with that language's code — via `route($routeName, [...])` when the current request matched a named route, or a bare `/{code}` fallback otherwise |
|
||||
|
||||
A 3+ language store gets one `$altLocales` entry per additional language automatically — nothing
|
||||
about this shape assumes or special-cases a two-language store.
|
||||
|
||||
---
|
||||
|
||||
## Single-language shops
|
||||
|
||||
Reference in New Issue
Block a user