本文介绍一种专业、可维护的方案:保持控制器文件名(如 `usercontroller`)和路由逻辑不变,通过路由映射层将本地化 url(如 `/gebruiker/mijn-account`)动态解析为对应控制器与动作,避免修改核心代码结构。
在 PHP MVC 应用中,直接将控制器类名或方法名本地化(例如把 UserController 改为 GebruikerController)看似直观,实则违背架构原则:控制器是业务逻辑单元,其命名应反映功能职责而非语言表征;且多语言支持需覆盖全部语言变体(如法语 /utilisateur/mon-compte、西班牙语 /usuario/mi-cuenta),硬编码命名会导致代码膨胀、维护困难、自动加载失效等问题。
✅ 正确做法是分离「路由展示」与「控制器执行」:URL 路径用于用户体验和 SEO,而内部调度始终指向统一的、语义清晰的控制器标识(如 user → UserController::myAccount())。
实现方案:基于路由映射表的本地化解析
在路由分发器(如 Router.php)中引入语言感知的路径预处理逻辑: