用途
i18n-rtl-audit 用于审计一个页面是否具备国际化(i18n)就绪能力,即检查 UI 在翻译后是否仍能正常显示。它关注三类问题:长文本翻译导致的布局断裂(伪本地化)、RTL(从右到左)渲染问题,以及硬编码的 UI 字符串。该技能无需注册即可使用。
主要能力
- 文档属性检查:检查
<html lang>和dir属性。缺失lang会影响屏幕阅读器和翻译;没有dir处理意味着不支持 RTL。 - 伪本地化(长字符串压力测试):将可见文本扩展约 40%(模拟英语到德语/芬兰语的典型增长),查找溢出或裁剪问题。
- RTL 检查:将页面方向翻转为
dir=rtl并截图,以发现未镜像的布局,例如本应镜像却仍左锚定的元素、方向错误的图标/箭头、仍左对齐的文本、损坏的内边距/外边距。 - 硬编码字符串检查:标记直接写入标记中、没有 i18n 包装的用户可见文本(启发式,需对照 i18n 目录验证)。
使用方式
前置条件:Playwright MCP(随 Claude Code 提供)。
触发指令示例:
- "i18n audit https://..."
- "Will my layout break when translated?"
- "Check RTL support on my site"
工作流程:
- 使用
mcp__playwright__browser_navigate导航到目标 URL。 - 使用
browser_evaluate检查文档属性(<html lang>和dir)。 - 执行伪本地化脚本,扩展可见文本约 40%,检测溢出元素,并返回页面是否变宽及溢出元素列表。
- 扩展后使用
browser_take_screenshot截图,直观展示断裂情况。 - 执行 RTL 翻转脚本:
() => { document.documentElement.setAttribute('dir','rtl'); },然后截图检查未镜像的布局。 - 记录硬编码字符串(启发式)。
伪本地化脚本示例:
() => {
// Expand text nodes to simulate a longer language
const before = document.documentElement.scrollWidth;
document.querySelectorAll('button, a, label, h1, h2, h3, .btn, [class*=nav]').forEach(el => {
if (el.children.length === 0 && el.textContent.trim())
el.textContent = el.textContent + ' ' + el.textContent.slice(0, Math.ceil(el.textContent.length*0.4));
});
const overflow = [...document.querySelectorAll('*')]
.filter(el => el.scrollWidth > el.clientWidth + 2 && el.clientWidth > 0)
.slice(0, 20)
.map(el => el.tagName.toLowerCase() + (el.className ? '.'+String(el.className).split(' ')[0] : ''));
return { grewPage: document.documentElement.scrollWidth > before, overflowing: overflow };
}
RTL 翻转脚本:
() => { document.documentElement.setAttribute('dir','rtl'); }
输出格式
输出为 Markdown 报告,包含以下部分:
- 标题:
## i18n & RTL Audit: [URL] - 总体结论(例如“Not translation-ready — 3 blocking issues”)
- Document 部分:列出
<html lang>缺失、无dir处理等问题。 - Long-string layout 部分:列出伪本地化后溢出的元素及建议(如使用灵活宽度/换行,而非固定像素)。
- RTL 部分:列出未镜像的布局问题。
- Hardcoded strings 部分:列出疑似硬编码的字符串,并提示对照 i18n 目录验证。
适用场景
- 在发布多语言版本前,快速检查页面是否具备国际化基础。
- 验证 RTL 语言(如阿拉伯语、希伯来语)的布局支持。
- 发现长文本翻译可能导致的 UI 断裂。
- 识别需要提取到 i18n 目录的硬编码字符串。
限制
- 需要 Playwright MCP(随 Claude Code 提供)作为前置条件。
- 硬编码字符串检查为启发式,结果需人工对照 i18n 目录验证。
- 伪本地化仅模拟约 40% 的文本扩展,可能无法覆盖所有语言的实际增长情况。
- 资料未提供关于收费、价格、平台兼容性等更多信息。