如何修改Struts 2默认回退Locale?当前默认'en'不符合需求
Struts2 设置默认回退Locale为丹麦语的解决方案
问题根源
你之前的配置无效,是因为Struts2默认的默认Locale是英文(Locale.ENGLISH)。当访问者使用不支持的Locale时,框架会优先加载英文资源文件(messages_en.properties),而不是你放在messages.properties里的丹麦语内容。
正确配置步骤
1. 调整国际化资源文件命名
按照标准命名规范整理资源文件:
- 丹麦语资源:
messages_da.properties(或更具体的messages_da_DK.properties) - 英语资源:
messages_en.properties - 可选兜底:
messages.properties,内容可与丹麦语一致,作为所有Locale匹配失败时的最终 fallback
2. 修改struts.xml配置
在struts.xml中添加以下常量配置,强制将默认Locale设为丹麦语:
<!-- 设置站点默认Locale为丹麦语 --> <constant name="struts.locale" value="da_DK" /> <!-- 启用Locale回退机制(默认已开启,明确配置确保生效) --> <constant name="struts.i18n.fallback.enabled" value="true" />
3. 验证效果
当访问者使用德语、斯瓦希里语等不支持的Locale时,框架会按以下顺序查找资源:
- 匹配请求Locale的资源文件(如
messages_de.properties)→ 找不到 - 匹配默认Locale(丹麦语)的资源文件(
messages_da.properties)→ 加载成功 - 如果连丹麦语资源也找不到,才会加载
messages.properties
额外说明
- 你原本通过
request_locale参数切换语言的功能不受影响,用户手动指定en或da时,依然能正常切换到对应语言。 - 如果需要更灵活的Locale初始化逻辑,也可以通过自定义拦截器实现,但上述常量配置已经能满足你的核心需求。
内容的提问来源于stack exchange,提问作者noughtnaut
相关产品推荐
相关产品推荐

