我想根据语言环境从资源包中设置我的表的“dir”属性。
这是片段:
<fmt:setBundle basename="class.path.to.resource.bundle"/>
<table align=center class="" dir=<fmt:message key="registration.direction"/>>
当页面呈现时,我得到了这个:
<table align=center dir=???registration.direction???>
我有两个英语和阿拉伯语的资源包。
registration.direction = ltr - &gt;英
registration.direction = rtl - &gt;阿拉伯
请告诉我做错了什么? dir应该具有“ltr”或“rtl”,具体取决于区域设置。
由于
BR SC
答案 0 :(得分:6)
两件事
1)我会添加一个变量来存储消息结果
<fmt:message key="registration.direction" var="direction" />
然后
2)我会用你的代码
执行以下操作 <fmt:setBundle basename="class.path.to.resource.bundle"/>
<fmt:message key="registration.direction" var="direction" />
<table align=center class="" dir="${direction}">
现在,就您的资源包而言,您的资源包应该具有以下结构
/foo/bar/MyResourceBundle.properties
/foo/bar/MyResourceBundle_en.properties
/foo/bar/MyResourceBundle_en_US.properties
/foo/bar/MyResourceBundle_<lang>[_COUNTRY[_VAR]].properties
如果您的捆绑包没有以这种方式构建,可能是您的一些问题。
确保所有预期可用的密钥都在MyResourceBundle中以合理的默认值定义。
我正在修改这个答案,因为我不确定我的评论是否在隐藏功能中丢失了。
由于你使用Struts 2,我的印象是你正在使用i18n拦截器。拦截器将当前区域设置存储在名为WW_TRANS_I18N_LOCALE的sesion变量中。因此,您应能够访问它并使用以下内容设置JSTL标记的区域设置:
<fmt:setLocale scope="session" value="${sessionScope.WW_TRANS_I18N_LOCALE}" />
希望对你有用。