在Laravel-Admin后台默认是英文,把相应内容改为中文显示。
目录
修改语言和时区
在config/app.php中,寻找以下两个配置改为中文语言和时区
php
'timezone' => 'RPC',
'locale' => 'zh-CN',
修改后台菜单
发布语言包
bash
php artisan vendor:publish --tag=laravel-admin-lang
修改仪表盘名称
改为使用语言包,而不是硬编码,如下:

添加菜单配置
修改语言包文件resources/lang/zh-CN/admin.php,
添加 menu_titles 数组中菜单翻译配置。
php
<?php
return [
'online' => '在线',
'login' => '登录',
'logout' => '登出',
'setting' => '设置',
'name' => '名称',
'username' => '用户名',
'password' => '密码',
'password_confirmation' => '确认密码',
'remember_me' => '记住我',
'user_setting' => '用户设置',
'avatar' => '头像',
'list' => '列表',
'new' => '新增',
'create' => '创建',
'delete' => '删除',
'remove' => '移除',
'edit' => '编辑',
'continue_editing' => '继续编辑',
'continue_creating' => '继续创建',
'view' => '查看',
'detail' => '详细',
'browse' => '浏览',
'reset' => '重置',
'export' => '导出',
'batch_delete' => '批量删除',
'save' => '保存',
'refresh' => '刷新',
'order' => '排序',
'expand' => '展开',
'collapse' => '收起',
'filter' => '筛选',
'search' => '搜索',
'close' => '关闭',
'show' => '显示',
'entries' => '条',
'captcha' => '验证码',
'action' => '操作',
'title' => '标题',
'description' => '简介',
'back' => '返回',
'back_to_list' => '返回列表',
'submit' => '提交',
'menu' => '菜单',
'input' => '输入',
'succeeded' => '成功',
'failed' => '失败',
'delete_confirm' => '确认删除?',
'delete_succeeded' => '删除成功 !',
'delete_failed' => '删除失败 !',
'update_succeeded' => '更新成功 !',
'save_succeeded' => '保存成功 !',
'refresh_succeeded' => '刷新成功 !',
'login_successful' => '登录成功 !',
'choose' => '选择',
'choose_file' => '选择文件',
'choose_image' => '选择图片',
'more' => '更多',
'deny' => '无权访问',
'administrator' => '管理员',
'roles' => '角色',
'permissions' => '权限',
'slug' => '标识',
'created_at' => '创建时间',
'updated_at' => '更新时间',
'alert' => '注意',
'parent_id' => '父级菜单',
'icon' => '图标',
'uri' => '路径',
'operation_log' => '操作日志',
'parent_select_error' => '父级选择错误',
'pagination' => [
'range' => '从 :first 到 :last ,总共 :total 条',
],
'role' => '角色',
'permission' => '权限',
'route' => '路由',
'confirm' => '确认',
'cancel' => '取消',
'http' => [
'method' => 'HTTP方法',
'path' => 'HTTP路径',
],
'all_methods_if_empty' => '为空默认为所有方法',
'all' => '全部',
'current_page' => '当前页',
'selected_rows' => '选择的行',
'upload' => '上传',
'new_folder' => '新建文件夹',
'time' => '时间',
'size' => '大小',
'listbox' => [
'text_total' => '总共 {0} 项',
'text_empty' => '空列表',
'filtered' => '{0} / {1}',
'filter_clear' => '显示全部',
'filter_placeholder' => '过滤',
],
'grid_items_selected' => '已选择 {n} 项',
'menu_titles' => [
'dashboard' => '仪表盘',
'users' => '用户管理',
'roles' => '角色管理',
'permission' => '权限管理',
'permissions' => '权限管理',
'admin' => '系统管理',
'menu' => '菜单管理',
'operation_log' => '操作日志',
'operation log' => '操作日志',
'examples' => '示例管理',
],
'prev' => '上一步',
'next' => '下一步',
'quick_create' => '快速创建',
'Dashboard' => '仪表盘',
'Dashboard desc' => '仪表盘描述',
];
清理缓存
bash
php artisan config:clear
php artisan cache:clear
php artisan view:clear
最终效果:

修改权限名称
权限名称更新为中文,直接修改数据表admin_permissions,
-
"All permission" → "所有权限"
-
"Dashboard" → "仪表盘"
-
"Login" → "登录"
-
"User setting" → "用户设置"
-
"Auth management" → "权限管理"
效果如下:

菜单管理列表修改
在菜单管理列表中发现显示的权限菜单列表为英文规则,并未显示中文。
修改路由
修改位于 app/Admin/routes.php的文件,
添加了以下路由来覆盖默认的 laravel-admin 菜单路由:
php
<?php
use Illuminate\Routing\Router;
Admin::routes();
Route::group([
'prefix' => config('admin.route.prefix'),
'namespace' => config('admin.route.namespace'),
'middleware' => config('admin.route.middleware'),
'as' => config('admin.route.prefix') . '.',
], function (Router $router) {
$router->get('/', 'HomeController@index')->name('home');
// 自定义菜单管理路由(覆盖默认路由)
$router->get('auth/menu', 'MenuController@index')->name('auth.menu');
$router->get('auth/menu/{id}', 'MenuController@show')->name('auth.menu.show');
$router->get('auth/menu/{id}/edit', 'MenuController@edit')->name('auth.menu.edit');
$router->post('auth/menu', 'MenuController@store');
$router->put('auth/menu/{id}', 'MenuController@update');
$router->delete('auth/menu/{id}', 'MenuController@destroy');
// 前端用户管理
$router->resource('frontend-users', 'FrontendUserController')->names('admin.frontend-users');
// 印章管理 - 生成印章图片路由必须在资源路由之前
$router->post('seals/generate', 'SealController@generate')->name('seals.generate');
$router->get('seals/generate', 'SealController@generate');
// 印章管理资源路由
$router->resource('seals', 'SealController')->names('admin.seals');
});
创建菜单控制器
创建路径位于app/Admin/Controllers/MenuController.php的文件。
主要修改:
-
添加了 getMenuTitle() 方法来根据菜单 URI 获取翻译后的标题
-
修改了 treeView() 方法,在渲染菜单树时使用翻译后的标题。
-
翻译逻辑:将菜单标题转换为语言包键名(如 users ),然后从语言包中获取对应的翻译。
内容如下:
php
<?php
namespace App\Admin\Controllers;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Form;
use Encore\Admin\Layout\Column;
use Encore\Admin\Layout\Content;
use Encore\Admin\Layout\Row;
use Encore\Admin\Tree;
use Encore\Admin\Widgets\Box;
use Encore\Admin\Widgets\Form as WidgetForm;
use Illuminate\Routing\Controller;
class MenuController extends Controller
{
use HasResourceActions;
/**
* Index interface.
*
* @param Content $content
*
* @return Content
*/
public function index(Content $content)
{
return $content
->title(trans('admin.menu'))
->description(trans('admin.list'))
->row(function (Row $row) {
$row->column(6, $this->treeView()->render());
$row->column(6, function (Column $column) {
$form = new WidgetForm();
$form->action(admin_url('auth/menu'));
$menuModel = config('admin.database.menu_model');
$permissionModel = config('admin.database.permissions_model');
$roleModel = config('admin.database.roles_model');
$form->select('parent_id', trans('admin.parent_id'))->options($menuModel::selectOptions());
$form->text('title', trans('admin.title'))->rules('required');
$form->icon('icon', trans('admin.icon'))->default('fa-bars')->rules('required')->help($this->iconHelp());
$form->text('uri', trans('admin.uri'));
$form->multipleSelect('roles', trans('admin.roles'))->options($roleModel::all()->pluck('name', 'id'));
if ((new $menuModel())->withPermission()) {
$form->select('permission', trans('admin.permission'))->options($permissionModel::pluck('name', 'slug'));
}
$form->hidden('_token')->default(csrf_token());
$column->append((new Box(trans('admin.new'), $form))->style('success'));
});
});
}
/**
* Redirect to edit page.
*
* @param int $id
*
* @return \Illuminate\Http\RedirectResponse
*/
public function show($id)
{
return redirect()->route('admin.auth.menu.edit', ['menu' => $id]);
}
/**
* @return \Encore\Admin\Tree
*/
protected function treeView()
{
$menuModel = config('admin.database.menu_model');
$tree = new Tree(new $menuModel());
$tree->disableCreate();
$tree->branch(function ($branch) {
// 根据 URI 获取翻译后的标题
$title = $this->getMenuTitle($branch['title']);
$payload = "<i class='fa {$branch['icon']}'></i> <strong>{$title}</strong>";
if (!isset($branch['children'])) {
if (url()->isValidUrl($branch['uri'])) {
$uri = $branch['uri'];
} else {
$uri = admin_url($branch['uri']);
}
$payload .= " <a href=\"$uri\" class=\"dd-nodrag\">$uri</a>";
}
return $payload;
});
return $tree;
}
/**
* 获取菜单标题的翻译
* @param string $defaultTitle
* @return string
*/
protected function getMenuTitle($defaultTitle)
{
// 如果是空 URI 或外部链接,直接返回原标题
if (empty($defaultTitle)) return $defaultTitle;
$title = strtolower($defaultTitle);
// 尝试从语言包获取翻译
return trans("admin.menu_titles.{$title}");
}
/**
* Edit interface.
*
* @param string $id
* @param Content $content
*
* @return Content
*/
public function edit($id, Content $content)
{
return $content
->title(trans('admin.menu'))
->description(trans('admin.edit'))
->row($this->form()->edit($id));
}
/**
* Make a form builder.
*
* @return Form
*/
public function form()
{
$menuModel = config('admin.database.menu_model');
$permissionModel = config('admin.database.permissions_model');
$roleModel = config('admin.database.roles_model');
$form = new Form(new $menuModel());
$form->display('id', 'ID');
$form->select('parent_id', trans('admin.parent_id'))->options($menuModel::selectOptions());
$form->text('title', trans('admin.title'))->rules('required');
$form->icon('icon', trans('admin.icon'))->default('fa-bars')->rules('required')->help($this->iconHelp());
$form->text('uri', trans('admin.uri'));
$form->multipleSelect('roles', trans('admin.roles'))->options($roleModel::all()->pluck('name', 'id'));
if ($form->model()->withPermission()) {
$form->select('permission', trans('admin.permission'))->options($permissionModel::pluck('name', 'slug'));
}
$form->display('created_at', trans('admin.created_at'));
$form->display('updated_at', trans('admin.updated_at'));
return $form;
}
/**
* Help message for icon field.
*
* @return string
*/
protected function iconHelp()
{
return 'For more icons please see <a href="http://fontawesome.io/icons/" target="_blank">http://fontawesome.io/icons/</a>';
}
}
效果:

管理员编辑头像
在后台管理员管理中修改管理员头像时提示:
bash
Config error.
Disk [admin] not configured, please add a disk config in `config/filesystems.php`.
问题原因
laravel-admin 在配置文件中指定使用 admin 磁盘来存储上传的文件( config/admin.php 第 156 行),但是在 config/filesystems.php 中没有配置这个磁盘,导致上传图片时出现 "Config error. Disk [admin] not configured" 错误。
添加磁盘配置
在文件 config/filesystems.php中
php
'admin' => [
'driver' => 'local',
'root' => public_path('uploads'),
'visibility' => 'public',
'url' => env('APP_URL').'/uploads',
],
清除配置缓存
执行 php artisan config:clear 使新配置立即生效。
总结
在Laravel-Admin后台默认是英文,把相应内容改为中文显示,并修改管理员编辑问题。