Skip to main content

Module message

Module message 

Source
Expand description

错误消息国际化 — 对齐 PHP think\Langthink\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);
}

优先级:

  1. 如果 msg 以 {% 开头且以 } 结尾,提取内部 key 调用 lang->get
  2. 否则如果 lang->has(msg) 为真,调用 lang->get(msg)
  3. 否则返回 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§

SimpleLang
简单多语言实现 — 基础键值对存储

Traits§

Lang
多语言接口 — 对齐 PHP think\Lang

Functions§

translate_msg
翻译消息 — 对齐 PHP Validate::parseErrorMsg 第 1598-1602 行