应直接修改 themes/default/css/theme.css,禁用第三方汉化包的 CSS 覆盖——因其选择器过时(如 div#serverinfo、.menu li a)导致导航栏消失、输入框错位;仅允许编辑 languages/zh_CN.php 翻译文本,确保 $cfg['Lang'] = 'zh_CN'; 已启用。
直接改 themes/default/css/theme.css,别用汉化包自带的 css 覆盖整套样式 —— 后者几乎必然和新版 phpmyadmin 的 dom 结构不匹配,导致导航栏消失、sql 输入框错位或按钮不可点。
为什么汉化包的 CSS 一加就乱?
多数第三方汉化包(尤其是 GitHub 上标着 “Chinese” “zh-CN” 的)本质是旧版(4.x 或 5.0 之前)phpMyAdmin 的 CSS 补丁,它们依赖已废弃的选择器,比如:
-
div#serverinfo→ 新版已改为div#server-info -
table tbody tr:nth-child(odd)→ 5.2+ 中tbody被移除,直接写table tr:nth-child(odd)会命中所有行(含表头) -
.menu li a→ 实际结构已是.navigation .item > a,旧规则完全失效
这些选择器失效后,汉化包里用于重排文字、加粗中文标签的样式就“悬空”,反而干扰默认布局。
安全替换中文文本的唯一可靠方式
phpMyAdmin 的语言切换机制本身是健壮的,CSS 冲突只发生在“强行注入汉化 CSS”的环节。真正该动的是语言资源文件:
- 确认
$cfg['Lang'] = 'zh_CN';已在config.inc.php中设置 - 检查
./languages/zh_CN.php是否存在且内容完整(不是空文件或 JSON 格式错误) - 若需微调个别字段翻译(如把“数据库”改成“DB”),直接编辑该 PHP 文件中对应键值,例如:
$strDatabase = 'DB';
- 切勿用 CSS 的
::before { content: "DB" }替换文字 —— 这类伪元素无法被屏幕阅读器识别,且可能被 JS 动态内容覆盖
必须禁用的汉化包“增强功能”
很多汉化包附带所谓“UI 优化”或“字体美化”,它们通常通过以下方式注入,全部要手动剥离:
立即学习“PHP免费学习笔记(深入)”;
- 修改
config.inc.php添加$cfg['AdditionalJSFiles'] = ['js/zh-hack.js'];→ 删除这行 - 在
themes/default/下新增css/zh_custom.css并通过<link>强制加载 → 删除该文件,并检查header.inc.php是否有硬编码的<link> - 汉化包文档里写的“复制整个 css/ 目录覆盖原目录” → 绝对禁止。只允许替换
languages/下的 PHP 文件
如果已覆盖过,恢复方法:从官方 tar.gz 包中重新提取 css/ 目录,用 rsync -av --delete 同步,别用 cp -r 全量覆盖 —— 否则会漏掉 common.css 等关键基础文件。
验证是否真解决冲突
改完后不要只看首页是否“有中文”,重点检查三处易崩位置:
- 点击任意数据库 → 左侧导航栏是否完整显示“结构”“SQL”“用户”等标签(不是空白或重叠)
- 执行一条
SELECT 1;→ SQL 查询框下方是否出现“影响行数”和“时间”信息(说明 JS 初始化未被阻断) - 打开开发者工具 → Elements 面板搜索
class="navigation",确认其子元素结构与官方 5.2+ 文档一致,没有多出style="display:none"等异常内联样式
DOM 结构没被 CSS 选择器意外隐藏,才是冲突真正解除的标志;光有中文,掩盖不了底层渲染逻辑已被破坏的事实。



















