关于项目国际化,请高手指点。
现在做一个网站,客户要求能手动切换中文,英我现在实在不指点该怎么实现,虽然我会用struts和spring的国文和繁体要求进入网站之前让客户选择,然后按客户的选择去显示主页是英文中文,还是繁体。
际化,但还是不知道怎么去实现上述功能。
有对这方面了解的,请多多指教。
------解决方案--------------------
struts1: 手工切换的时候,改session里面键"org.apache.struts.action.LOCALE"的为相应的值,如zh_CN等,
然后刷新下界面就可以了。
------解决方案--------------------
如果你单纯的提供多个配置文件的话 那么Local 是由struts在session中存的这个值决定的
而这个值 默认是保存和操作系统的区域一直 当然如果你操作系统设置的区域 在你所提供的配置文件中
没有与其对应的话 那么就采用默认的配置文件 也就是没有后缀的配置文件 如ApplicationMessage.properties
如果你需要手动切换的话 你就需要手动修改struts为你维护的这个session的键值就行了
页面中则灵活获取 个人觉得国际化 很麻烦 有什么时候 客户也就是想用 其实根本用不上
------解决方案--------------------
以前用纯struts1弄过,手头没有例子,
我回忆一下吧。
原理好像是根据那些struts标签使用某个变量来判断使用什么语言来显示,
(那个变量在session中还是别的地方忘了)
就在语言设置的那个功能中,
取得用户需要的语言然后放在上面的那个变量里。
好像接触到了struts1的配置文件中的那个controller节点
参考:
http://struts.apache.org/1.3.10/userGuide/configuration.html#struts-config
还有自己写的
org.apache.struts.action.RequestProcessor
中的
processLocale方法
lz先试试看,晚上回家找找,能找到的话再回来写个清楚点的。
good luck
------解决方案--------------------
1、struts-config.xml中
<struts-config>
<message-resources parameter="MessageResources"/>
</struts-config>
2、提供不同语言的国际化资源文件
中文 MessageResources_zh_CN.properties 里面的中文要用 javahome/bin下的native2scii转成unicode
例如:user.username=用户名/UserName (注意中文要转换成unicode)
3、页面中
<bean:message key="user.username"/>
4、国际化的切换(在action里)
Locale currentLocale = new Locale("zh","CN");
(1)request.getSession().setAttribute(Globals.LOCALE.KEY,currentLocale);
(2)this.setLocale(request, currentLocale);
(1)(2)方法一样 ,任选
------------------------------------------------
上面是静态内容的struts国际化
以下是动态内容的国际化
1、国际化资源文件有所不同
user.username=用户名/UserName {0} 这个{0}就是要动态填充的
2、action中
String username = "george";
ActionMessage message = new ActionMessage("user.username",new Object[]{username});
ActionMessages messages = new ActionMessages();
messages.add("username",message);
this.saveMessages(request,messages);
3、页面中
<html:messages id="msg" message="true"> 此标签循环输出 messages中的填充了动态内容的 国际化信息
<bean:write name"msg"/>
</html:messages>
------------------------------
补充:可用this.saveErrors(request,messages);去填充错误信息
页面中用<html:errors/>来显示,错误信息是红色显示。