用途:校验 TestFx 生成的本地化目录(XLIFF 1.2,OASIS 命名空间),检查资源 ID、占位符与 {Locked="..."} 令牌,适用于 RESX/XLF 变更、OneLoc PR 和本地化构建。
主要能力:检查生成单元是否对应中性字符串资源 ID、源文本是否与中性值完全一致、注释是否匹配;识别 RESX 排除项(类型化/二进制条目、设计器名称、整值 {Locked} 注释、空值);校验数字复合格式参数索引是否保留、转义大括号;检查锁定令牌是否逐字出现在中性值与已完成目标中(区分大小写、子串匹配)。
使用方式:在仓库根目录用 Python 3.12 或更高版本运行: python .github\scripts\test_check_localization.py python .github\scripts\check_localization.py Linux/macOS 路径用 /。独立工作流 check-localization.yml 在本地化 PR 上运行相同命令。退出码:0 干净,1 目录发现问题,2 调用/发现错误(含无目录)。
限制:这是聚焦守卫,不是完整 XSD 校验器或翻译质量审查;不要求 target 必须存在,alt-trans 内 target 是备选而非重复;内联 XLIFF 代码需人工处理。发现按中性文件、资源 ID 和缺陷分组,应回到权威源修复,不要手工编辑生成的 XLF,也不要为通过检查而新增对合法 XLIFF 的禁令。重新生成用所属项目的 UpdateXlf 目标,例如: .\build.cmd ..dotnet\dotnet.exe msbuild src\Platform\Microsoft.Testing.Platform\Microsoft.Testing.Platform.csproj /t:UpdateXlf -bl:artifacts\log\localization-update.binlog python .github\scripts\check_localization.py 若 DOTNET_INSTALL_DIR 提供固定 SDK,则改用该 dotnet。重新生成对源文本、ID 和注释具有权威性,但不证明翻译语言正确。重复目标、错误翻译、占位符或锁定令牌问题应转交 OneLoc 生产者/维护者修正。