You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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时,框架会按以下顺序查找资源:

  1. 匹配请求Locale的资源文件(如messages_de.properties)→ 找不到
  2. 匹配默认Locale(丹麦语)的资源文件(messages_da.properties)→ 加载成功
  3. 如果连丹麦语资源也找不到,才会加载messages.properties

额外说明

  • 你原本通过request_locale参数切换语言的功能不受影响,用户手动指定en或da时,依然能正常切换到对应语言。
  • 如果需要更灵活的Locale初始化逻辑,也可以通过自定义拦截器实现,但上述常量配置已经能满足你的核心需求。

内容的提问来源于stack exchange,提问作者noughtnaut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:42:55