Struts(1)默认区域设置为';没有选择

Struts(1)默认区域设置为';没有选择,struts,locale,Struts,Locale,在我的应用程序中,用户可以从两个语言环境中进行选择:EN和IT。如果浏览器使用另一种语言,那么必须自动选择英语,对吗 但是,这里有一个问题,例如,当用户使用法语浏览器时,他试图在其中查找法语,但没有法语区域设置,并且他在页面上没有显示任何内容 所以,问题是:哪个库或进程响应选择默认区域设置?也许我的图书馆已经过时了,或者 如果浏览器使用另一种语言,那么必须自动选择英语,对吗 这要看情况了!Struts尝试查找最特定的消息包,然后返回到一些默认值(例如默认的JVM区域设置或没有语言后缀的消息包):

在我的应用程序中,用户可以从两个语言环境中进行选择:EN和IT。如果浏览器使用另一种语言,那么必须自动选择英语,对吗

但是,这里有一个问题,例如,当用户使用法语浏览器时,他试图在其中查找法语,但没有法语区域设置,并且他在页面上没有显示任何内容

所以,问题是:哪个库或进程响应选择默认区域设置?也许我的图书馆已经过时了,或者

如果浏览器使用另一种语言,那么必须自动选择英语,对吗

这要看情况了!Struts尝试查找最特定的消息包,然后返回到一些默认值(例如默认的JVM区域设置或没有语言后缀的消息包):

。。。没有法语地区,他也没有在页面上显示任何内容

这似乎不对;当无法解析消息键时,您可能会得到一个异常,例如:“缺少捆绑包中的键的消息”…“缺少区域设置…”,或者在struts-config.xml中得到一个类似于“?”fr.yourKey???”的配置,例如
,因此您应该在页面上或至少在日志中看到一些内容

我的建议是激活org.apache.struts.util.PropertyMessageResources的日志,看看它试图找到什么。同时检查你的.properties文件,也许你的密钥在默认文件中被解析,它们是空的

至于选择要在当前请求中使用的区域设置的进程(除了PropertyMessageResources对其操作模式所做的操作之外),在某个时候 Struts请求处理器调用负责返回区域设置的人员

此类尝试在会话中查找缓存的区域设置。如果在那里找不到,则使用请求中的一个。如果在那里找不到,它最终默认为JVM语言环境。您的区域设置现在被选中并缓存在会话中

这是一个Struts类,因此您可以在Struts核心JAR中找到它。如果您可以访问所使用的特定版本的Struts源代码,那么您可以自己查看一下区域设置是如何管理的;所使用的代码就是您所追求的

如果浏览器使用另一种语言,那么必须自动选择英语,对吗

这要看情况了!Struts尝试查找最特定的消息包,然后返回到一些默认值(例如默认的JVM区域设置或没有语言后缀的消息包):

。。。没有法语地区,他也没有在页面上显示任何内容

这似乎不对;当无法解析消息键时,您可能会得到一个异常,例如:“缺少捆绑包中的键的消息”…“缺少区域设置…”,或者在struts-config.xml中得到一个类似于“?”fr.yourKey???”的配置,例如
,因此您应该在页面上或至少在日志中看到一些内容

我的建议是激活org.apache.struts.util.PropertyMessageResources的日志,看看它试图找到什么。同时检查你的.properties文件,也许你的密钥在默认文件中被解析,它们是空的

至于选择要在当前请求中使用的区域设置的进程(除了PropertyMessageResources对其操作模式所做的操作之外),在某个时候 Struts请求处理器调用负责返回区域设置的人员

此类尝试在会话中查找缓存的区域设置。如果在那里找不到,则使用请求中的一个。如果在那里找不到,它最终默认为JVM语言环境。您的区域设置现在被选中并缓存在会话中


这是一个Struts类,因此您可以在Struts核心JAR中找到它。如果您可以访问所使用的特定版本的Struts源代码,那么您可以自己查看一下区域设置是如何管理的;使用的代码就是您想要的。

您解释了我已经知道的,尽管我的问题不同:)@Comodore Panamo:我已经用一些细节更新了答案。看看是否有帮助,如果没有,那么告诉我你在寻找什么样的答案。你解释一下我已经知道的,尽管我的问题不同:)@Comodore Panamo:我已经用一些细节更新了答案。看看它是否有帮助,如果没有,那么告诉我你在寻找什么样的答案。
base + "_" + localeLanguage + "_" + localeCountry + "_" + localeVariant
base + "_" + localeLanguage + "_" + localeCountry
base + "_" + localeLanguage
base + "_" + default locale
base