Expand description
错误消息国际化 — 对齐 PHP think\Lang 和 think\Validate::parseErrorMsg
本模块实现错误消息的国际化翻译机制,对齐 PHP
think\Validate::parseErrorMsg(第 1596-1633 行)的 Lang 翻译行为。
§PHP 对齐
§核心接口映射
| PHP 方法 | Rust 接口 | 说明 |
|---|---|---|
Lang::has($name) | Lang::has | 判断语言定义是否存在(不区分大小写) |
Lang::get($name) | Lang::get | 获取语言定义(找不到返回 name 本身) |
Validate::setLang($lang) | Validate::set_lang | 注入 Lang 实例 |
parseErrorMsg 第 1598-1602 行 | translate_msg | 消息翻译({%var} + has 检查) |
§PHP parseErrorMsg 翻译逻辑(R5-7)
对齐 PHP Validate.php 第 1598-1602 行:
if (0 === strpos($msg, '{%')) {
$msg = $this->lang->get(substr($msg, 2, -1));
} elseif ($this->lang->has($msg)) {
$msg = $this->lang->get($msg);
}优先级:
- 如果 msg 以
{%开头且以}结尾,提取内部 key 调用lang->get - 否则如果
lang->has(msg)为真,调用lang->get(msg) - 否则返回 msg 原值
§PHP Lang::has / Lang::get 行为
对齐 PHP Lang.php:
- 不区分大小写:
strtolower($name)(第 231/234 行) - 找不到时返回 name 本身:
?? $name(第 263 行) - 支持语言分组:
allow_group配置(本实现不涉及,简化版)
§架构说明
本模块提供 Lang trait 作为接口契约,SimpleLang 作为默认实现。
Validate::set_lang 接受 Arc<dyn Lang> 注入实例,Option::None
时跳过翻译(对齐 PHP 未注入 Lang 时的行为)。
Structs§
- Simple
Lang - 简单多语言实现 — 基础键值对存储
Traits§
- Lang
- 多语言接口 — 对齐 PHP
think\Lang
Functions§
- translate_
msg - 翻译消息 — 对齐 PHP
Validate::parseErrorMsg第 1598-1602 行