如何在Struts 2中一键应用全站i18n?

问题描述 投票:0回答:2

是否可以应用 Struts 2 国际化(i18n),通过单击将网站所有网页上的语言从English更改为Hindi

如果可以的话我该如何解决这个问题?

struts2 internationalization
2个回答
1
投票

正如@RomanC提到的,可以做到这一点,你需要在你的包中有

i18n
拦截器。

之后,您需要 jsp 页面

submit
一个其中包含
request_locale
的表单,或者调用其参数中包含
request_locale
的操作。例如,如果您想使用
select
进行操作,您可以使用以下内容:

<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 个页面,当然,只要您重新加载页面即可。因此,如果您想使用

tab
执行此操作,您需要重新加载新页面(例如使用 ajax)或重新加载整个站点以从 struts 获取本地化的 jsp。


1
投票

框架国际化。

您需要为每个语言环境添加对应的资源包 通过 struts 标签显示的本地化消息。使用

text
标签或
getText()
可在 UI 中检索消息。

浏览器语言通过HTTP请求和框架传递 创建与浏览器设置相对应的区域设置。交换 通过传递特殊参数

request_locale
来执行区域设置
i18n
拦截器应该在你的堆栈上。

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

通常,切换到区域设置会在用户会话中持续存在。 因此,您不必每次请求时都传递参数,但是 如果需要,也支持这种情况。看看你如何才能实现所有目标 上述内容使用 localization

© www.soinside.com 2019 - 2024. All rights reserved.