Laravel-Admin 语言改为中文(1)
本文介绍了将Laravel-Admin后台界面汉化的完整步骤最终实现了后台界面的全面中文化。目录修改语言和时区修改后台菜单显示中文发布语言包修改仪表盘名称添加菜单配置清理缓存修改权限名称菜单管理列表修改修改路由创建菜单控制器总结修改语言和时区在config/app.php中寻找以下两个配置改为中文语言和时区timezone RPC, locale zh-CN,修改后台菜单显示中文发布语言包php artisan vendor:publish --taglaravel-admin-lang修改仪表盘名称改为使用语言包而不是硬编码如下添加菜单配置修改语言包文件resources/lang/zh-CN/admin.php添加 menu_titles 数组中菜单翻译配置。?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 操作日志, examples 示例管理, ], prev 上一步, next 下一步, quick_create 快速创建, Dashboard 仪表盘, Dashboard desc 仪表盘描述, ];清理缓存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 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(/, HomeControllerindex)-name(home); // 自定义菜单管理路由覆盖默认路由 $router-get(auth/menu, MenuControllerindex)-name(auth.menu); $router-get(auth/menu/{id}, MenuControllershow)-name(auth.menu.show); $router-get(auth/menu/{id}/edit, MenuControlleredit)-name(auth.menu.edit); $router-post(auth/menu, MenuControllerstore); $router-put(auth/menu/{id}, MenuControllerupdate); $router-delete(auth/menu/{id}, MenuControllerdestroy); // 前端用户管理 $router-resource(frontend-users, FrontendUserController)-names(admin.frontend-users); // 印章管理 - 生成印章图片路由必须在资源路由之前 $router-post(seals/generate, SealControllergenerate)-name(seals.generate); $router-get(seals/generate, SealControllergenerate); // 印章管理资源路由 $router-resource(seals, SealController)-names(admin.seals); });创建菜单控制器创建路径位于app/Admin/Controllers/MenuController.php的文件。主要修改- 添加了 getMenuTitle() 方法来根据菜单 URI 获取翻译后的标题- 修改了 treeView() 方法在渲染菜单树时使用翻译后的标题。- 翻译逻辑将菜单标题转换为语言包键名如 users 然后从语言包中获取对应的翻译。内容如下?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 classfa {$branch[icon]}/inbsp;strong{$title}/strong; if (!isset($branch[children])) { if (url()-isValidUrl($branch[uri])) { $uri $branch[uri]; } else { $uri admin_url($branch[uri]); } $payload . nbsp;nbsp;nbsp;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 hrefhttp://fontawesome.io/icons/ target_blankhttp://fontawesome.io/icons//a; } }效果总结本文介绍了将Laravel-Admin后台界面汉化的完整步骤最终实现了后台界面的全面中文化。