Struts2 如何在Struts 2中通过单击在整个网站上应用i18n

Struts2 如何在Struts 2中通过单击在整个网站上应用i18n,struts2,internationalization,Struts2,Internationalization,是否可以应用Struts 2国际化(i18n)在网站的整个网页上通过单击将语言从英语更改为印地语 如果可能的话,我如何解决这个问题 该框架是国际化的。 您需要为每个语言环境添加相应的语言环境资源包 通过struts标记显示的本地化消息。使用 text标记或getText()在UI中检索消息 浏览器语言随HTTP请求和框架一起传递 创建与浏览器设置相对应的区域设置。转换 通过将特殊参数request\u locale传递给 i18n应该在堆栈上的拦截器 您还可以将此拦截器配置为接受用户定义的 参数

是否可以应用Struts 2国际化(i18n)在网站的整个网页上通过单击将语言从英语更改为印地语

如果可能的话,我如何解决这个问题

该框架是国际化的。 您需要为每个语言环境添加相应的语言环境资源包 通过struts标记显示的本地化消息。使用
text
标记或
getText()
在UI中检索消息

浏览器语言随HTTP请求和框架一起传递 创建与浏览器设置相对应的区域设置。转换 通过将特殊参数
request\u locale
传递给
i18n
应该在堆栈上的拦截器

您还可以将此拦截器配置为接受用户定义的 参数

正常情况下,切换到用户会话的区域设置。 因此,您不必每次在每个请求上都传递一个参数,但是 如果需要,也支持此案例。看看你是如何做到这一切的 使用上述方法


正如@RomanC所提到的,要做到这一点,您需要在包中包含
i18n
拦截器

之后,您需要jsp页面
提交
一个包含
request\u locale
的表单,或者在其参数中调用包含
request\u locale
的操作。例如,如果要使用
选择
,可以使用以下命令:

<s:form id="langselect" action="locale-manager" namespace="/common">
        <s:select name="request_locale" headerKey="-1"
                headerValue="Language" 
                list="#{'en_US':'English', 'fa_IR':'فارسی','ar_SA':'العربية','zh_CN':'中国的'}"
                onchange="forms['langselect'].submit()" />
</s:form>

表单操作根本不需要更改语言环境,因为拦截器将为您完成所有工作


当然,一旦重新加载页面,更改区域设置将立即更改所有20个页面。因此,如果您想使用
选项卡
执行此操作,您需要重新加载新页面(例如使用ajax)或重新加载整个站点,以从struts获取本地化jsp。

嗨@Andrea Ligios,请详细说明如何解决此问题……?@AleksandrM为什么如此粗鲁?@RomanC rude?这是两个人中礼貌的一个。:)@AleksandrM我已经在我的答案和之前的答案中发布了这个链接,你可以同时投票:)嗨Roman C,我的问题是如果我的网站总共有20个页面,那么通过使用国际化框架,我想通过单击标题上的选项卡来更改所有页面的本地文本。请阅读此答案,它有一个链接,您可以通过它阅读更多关于您的问题以及如何解决问题的信息。