laravel-localization с переведенным слагом, хранящимся в базе данных
Я пытаюсь сделать многоязычный Laravel. Для этого я использую разные пакеты
- htt ps://github.com/spatie/laravel-translatable/ для хранения моих данных перевода в том же столбце в массиве JSON
- htt ps://github.com/mcamara/laravel-localization для определения моих переводимых маршрутов
Мои слизни переводятся и хранятся в базе данных следующим образом:
{
"fr": "a-propos",
"en":"about"
}
И все мои другие переводимые данные тоже такие. И чтобы получить доступ к одной из моих данных, я использую, например, $page->slug
или же $page->title
,
Мои переводы работают хорошо. Но сейчас я пытаюсь создать меню языков с правильными URL-адресами.
Хочу, если я на странице "о" имею две ссылки в меню:
http://myapp/en/about
http://myapp/fr/a-propos
Вот мой код:
<ul>
@foreach(LaravelLocalization::getSupportedLocales() as $localeCode => $properties)
<li>
<a rel="alternate" hreflang="{{ $localeCode }}" href="{{ LaravelLocalization::getURLFromRouteNameTranslated($localeCode, $page->slug, [], true) }}">
{{ $properties['native'] }}
</a>
</li>
@endforeach
</ul>
К сожалению, мои URL плохие. Если я нахожусь на странице "о" на английском языке, я имею в своем меню:
http://myapp/en/about
http://myapp/fr/about
И я хотел бы http://myapp/fr/a-propos
, Данные хранятся в моей базе данных.
Есть ли способ убедиться, что вы собираете данные с других языков, находясь в другой локали (здесь я на EN и хотел бы иметь FR FR).
Вы можете мне помочь? Большое спасибо!