ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

WebGoat 多语言支持:语言切换 3 种方式与中文支持的落地路径

WebGoat 多语言支持:语言切换 3 种方式与中文支持的落地路径 WebGoat 多语言支持语言切换 3 种方式与中文支持的落地路径【免费下载链接】WebGoatWebGoat is a deliberately insecure application项目地址: https://gitcode.com/GitHub_Trending/we/WebGoat用 OWASP WebGoat 做漏洞演练时最直接的障碍往往不是攻击本身而是满屏英文界面菜单、提示语、课程说明全在考验英语阅读速度。好消息是 WebGoat 的国际化i18n支持是开箱即用的——默认跟随浏览器语言登录后可以用lang参数或顶部菜单随时切换。坏消息是翻遍src/main/resources/i18n目录只有messages.properties、messages_de.properties、messages_fr.properties、messages_nl.properties、messages_es.properties五套文件没有messages_zh.properties官方目前不支持中文界面。多语言能力全景一套资源文件 一个拦截器组件位置作用涉及语言SessionLocaleResolverMvcConfiguration.java把解析出的 Locale 存进 Session保证会话内语言一致全部LocaleChangeInterceptor同上参数名固定为lang响应 URL 上的?langxx并切换语言全部核心标签资源文件src/main/resources/i18n/登录页、按钮、提示语等全局文案en / de / fr / nl / es课程级WebGoatLabels*.properties各课程下i18n/目录如 webgoatintroduction/i18n/单个课程内的按钮与标签部分课程有 de / fr / nl 版课程文档Introduction_xx.adoc如 webgoatintroduction/documentation/课程正文翻译en / de / fr / nl / es最容易卡住的点切换语言后只有欢迎页和全局按钮变了课程正文还是英文——因为全局标签和课程文档是两套独立的翻译资源后者按课程粒度覆盖很多课程根本没有对应语言的.adoc。语言解析的完整链路如下分步实操3 种方式切换 WebGoat 语言方式一靠浏览器语言自动生效登录前先确认浏览器偏好语言。WebGoat 依据Accept-Language请求头选择语言命中 de/fr/nl/es 之一就用对应语言否则回落到英文。做法浏览器设置里把首选语言改成德语访问 WebGoat 首页并登录顶部导航栏文案即变为德语例如 Welcome 区域显示 Willkommen。⚠️ 这里坑比较多浏览器语言是主语言-地区格式如de-DE而 WebGoat 只认语言代码de。如果首选语言列表里德语排在英文之后Accept-Language第一个值仍是en界面照样是英文——把目标语言拖到第一位再刷新。方式二登录后用顶部语言菜单切换登录进入主页面后顶部导航栏有一个带国旗图标的语言下拉菜单模板位于 main_new.html直接选目标语言即可。菜单渲染的是 5 个固定选项!-- main_new.html 中的语言切换链接每个选项都指向同一个路由 -- a rolemenuitem th:href{/start.mvc?langde#lesson/WebGoatIntroduction.lesson}Deutsch/a a rolemenuitem th:href{/start.mvc?langfr#lesson/WebGoatIntroduction.lesson}Français/a !-- …省略 nl、es 两个同类选项… --切换后会跳回 Introduction 页面——这是预期行为不是页面丢失。方式三URL 参数lang强制指定不想用鼠标的话直接改地址栏# 在 WebGoat 任意页面地址后追加参数例如切到荷兰语 https://your-webgoat-host:8080/WebGoat/start.mvc?langnl三种方式的本质相同都落到LocaleChangeInterceptor这一个入口区别只是谁来发起这个带lang参数的请求。做完后看两处确认生效顶部导航栏文案变化以及 Introduction 课程首段是否加载了对应语言的Introduction_xx.adoc文档。进阶路径与替代方案让 WebGoat 长出中文方案 A按官方规范贡献中文语言包适用人群愿意提 PR 的开发者代价是一份翻译工作量约 65 行核心标签 逐课程文档。官方流程完整写在 README_I18N.md核心步骤# 1) 复制 i18n/messages.properties 为 i18n/messages_zh.properties翻译值 assignment.solved恭喜。你已成功完成该任务。 username用户名 password密码 # …省略其余约 60 行逐条对照英文翻译… # 2) 复制课程文档 Introduction.adoc 为 Introduction_zh.adoc 并翻译 # 3) 在 main_new.html 语言菜单中新增 zh 选项指向 /start.mvc?langzh # 4) 放置 zhlang.svg 国旗图标到 webgoat/static/css/img 目录 # 5) 运行 LabelAndHintIntegrationTest 集成测试验证标签完整⚠️ 新增语言后务必跑一遍mvn clean下的LabelAndHintIntegrationTest它专门校验各语言标签无缺失——README_I18N.md 明确把这一步列为提交前必做项跳过的话合并后会被测试拦下。方案 B本地临时汉化不碰官方代码适用人群只想自己用得顺畅的学习者代价是每次升级 WebGoat 后要手动合并一次改动。思路是 fork 本地副本后只做最小汉化在本地工作目录补一份messages_zh.properties覆盖高频文案登录、按钮、报错提示这几十条就覆盖了 80% 交互场景课程正文不翻译配合浏览器整页翻译插件兜底阅读.adoc文档。这种方式不改仓库结构、不触发语言菜单改造改动面小升级冲突少插件翻译只作用于展示层不影响攻击载荷输入可以放心开着。两种方案可叠加先用方案 B 顶住日常使用翻译积累够了再走方案 A 贡献出去。排错速查表现象常见原因处理动作切换语言后部分页面仍是英文该课程没有对应语言的Introduction_xx.adoc文档换回英文阅读该课程或自行翻译课程文档URL 加?langzh无效zh不是已注册语言回落到英文属正常只使用 en / de / fr / nl / es 五个值浏览器设了德语界面却显示英文首选语言列表中en排在de前面把目标语言调到浏览器首选语言第一位新标签页语言重置了SessionLocaleResolver按 Session 存语言新会话按浏览器语言重新解析属预期行为重新用lang参数切换即可标签显示原始 key如assignment.solved对应.properties文件缺该键检查目标语言资源文件与英文版的键差异若以上均未解决优先检查所用 WebGoat 版本与浏览器版本兼容性并确认访问的是主应用端口8080而非 WebWolf9090等其他服务。收尾记住两级翻译资源这个核心模型WebGoat 的语言能力由三件小事拼成SessionLocaleResolver记住会话语言LocaleChangeInterceptor监听lang参数两套properties 课程.adoc提供实际文案。日常使用记住菜单切换或?lang参数一条路径就够想看到中文界面短期靠本地汉化 浏览器翻译长期靠按 README_I18N.md 流程补齐zh语言包——这是唯一被官方测试流程认可的路径。分角色建议普通用户直接用顶部菜单或?langde切换德/法/荷/西语配合浏览器翻译插件阅读英文课程开发者按 README_I18N.md 流程贡献messages_zh.properties与课程文档翻译提交前跑LabelAndHintIntegrationTest企业用户内部培训场景建议 fork 后按方案 B 做最小汉化锁定 WebGoat 版本便于升级合并基于 WebGoat 当前仓库源码i18n 目录含 en/de/fr/nl/es 五套语言文件在 Linux 环境下核对验证。【免费下载链接】WebGoatWebGoat is a deliberately insecure application项目地址: https://gitcode.com/GitHub_Trending/we/WebGoat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表