php - 如何在 Laravel 的动态菜单上制作(或构思)多种语言?
问题描述
我想在 Laravel 上制作动态菜单。菜单级别将存储在数据库中。但我的问题是,这些菜单必须能够切换到其他语言。所以我不确定laravel-localization
是否有能力?下面是我的愿望表。
menuid languageA(English) languageB languageC
1 menuname1 www xxx
2 menuname2 yyy zzz
任何建议或指导将不胜感激,谢谢
解决方案
我喜欢Spatie 的想法。
这个包包含一个使 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;
推荐阅读
- python - Django - 条件外键
- ms-access-2007 - Access 2007 表单:未绑定文本框:备注字段被截断
- python-3.x - 将 matplotlib.pyplot 导入为 plt - KeyError: 'keymap.quit_all'
- javascript - 获取文本区域的长度
- javascript - React Native Parse.File,我应该将它作为输入提供什么?
- elixir - 长生不老药中的转义字符串
- sql - SQL Server differential backup
- webpack - 如何在 aurelia.json 文件、带有 webpack 捆绑器的应用程序中配置 3rd 方库
- python - 客户端(Python)负载平衡 MySQL 服务器
- neural-network - Is it necessary to use a linear bottleneck layer for autoencoder?