Как сделать (или придумать) несколько языков в динамическом c меню на Laravel? - PullRequest
0 голосов
/ 01 февраля 2020

Я хотел бы сделать динамическое c меню на Laravel. Уровень меню будет сохранен в базе данных. Но моя проблема в том, что эти меню должны переключаться на другой язык. Так что я не уверен, что laravel-localization способен? Ниже приведена таблица моих желаний.

menuid       languageA(English)          languageB            languageC
1             menuname1                   www                  xxx
2             menuname2                   yyy                  zzz

Буду признателен за любые советы или рекомендации, спасибо

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

Я люблю Ссора ie идея.

Этот пакет содержит черту, позволяющую переводить модели Eloquent. Переводы хранятся как json. Для их хранения не требуется дополнительная таблица.

Таблица

id       name
1        {'en' => 'Home', 'id' => 'Beranda'}
2        {'en' => 'About', 'id' => 'Tentang'}

Модель

use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;

class Menu extends Model
{
    use HasTranslations;

    public $translatable = ['name'];
}

Создание моделей

Вы можете сразу установить перевод, когда создание модели. Вот пример:

$menu = Menu::create([
   'name' => [
      'en' => 'About',
      'id' => 'Tentang'
   ],
]);

Получение перевода

Самый простой способ получить перевод для текущей локали - просто получить свойство для переведенного атрибута.

$menu->name;
1 голос
/ 01 февраля 2020

Есть два способа сделать это, например, вы можете разделить данные для двух таблиц, таких как

// Menus
id
link
sort_number
created_at
updated_at

// Menus languages
id
menu_id
title
language
created_at
updated_at

, а затем выбрать их по соотношению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...