当前位置:编程学习 > JAVA >>

java网站的中英文切换该怎样实现呀。。

我用java做了个网站想实现中文和英文版的,我用的框架是struts1,hibernate,spring框架,好多人说用国际化就可以实现,但是具体操作是什么呀,怎呀实现呀。。。。。。。。。。。 --------------------编程问答-------------------- 就是国际化呀,具体作法网上你去找,思路就是把你页面上显示文字的地方,全部提出来写到一配置文件里,一份中文配置文件,一份英文配置文件,hash对应,比如 英语配置文件中a="China" ,那中文就是a="中国",页面上对应a的位置就可以显示成2种语言,就是切换这2份国际化的配置文件 --------------------编程问答-------------------- 能不能给点具体的代码呀,我也知道大概是这样写,但是能具体点吗。。。。。。。 --------------------编程问答--------------------
引用 1 楼 sunnaoh 的回复:
就是国际化呀,具体作法网上你去找,思路就是把你页面上显示文字的地方,全部提出来写到一配置文件里,一份中文配置文件,一份英文配置文件,hash对应,比如 英语配置文件中a="China" ,那中文就是a="中国",页面上对应a的位置就可以显示成2种语言,就是切换这2份国际化的配置文件


理论上这么做是可以,但是实际上有困难,高手帮解决下! --------------------编程问答-------------------- struts 可以的饿!!

有个文件 可以有中英两个版本 忘了名字!! --------------------编程问答-------------------- 我知道可以,但是你页面上的东西都得写在配置文件中,还有一些提示性的语言,也就是说只要是有中文的地方都要写在配置文件里,你觉得struts能做到吗?我觉得理论上可以,实际上不行 --------------------编程问答-------------------- 去百度或google搜下struts国际化 应该会有很多具体实现的步骤啊 --------------------编程问答-------------------- en_US和zh_CN两个配置文件,获取要显示的语言,设置locale --------------------编程问答--------------------
引用 7 楼 storm_1984 的回复:
en_US和zh_CN两个配置文件,获取要显示的语言,设置locale



具体说下可以吗。。。。。 --------------------编程问答-------------------- 网站应该不行吧,以后还要发布信息之类的呢,发布的信息能国际化? --------------------编程问答-------------------- 设置一个链接,点击的时候将系统的那个语言修改一下就可以了。 --------------------编程问答-------------------- 用struts可以实现的啊
主要是要用到 en_US和zh_CN两个配置文件
把你想要转换的文字写在属性文件里面  但要对应 --------------------编程问答--------------------
引用 10 楼 niujfox 的回复:
设置一个链接,点击的时候将系统的那个语言修改一下就可以了。



具体点行不         最好能给个例子让参考一下吧,,,谢了
--------------------编程问答-------------------- struts2中可以这样设置
//获取本地语言
Locale lc = Locale.getDefault();
                //this.getLanguageFlg()是获取你选择的语言
System.out.println("languageFlg============="+this.getLanguageFlg());
if(!"".equals(this.getLanguageFlg().trim()) && 
!"1".equals(this.getLanguageFlg().trim())) {
lc = Locale.US;
}
System.out.println(lc.toString());
ActionContext.getContext().setLocale(lc);
ServletActionContext.getRequest().getSession().setAttribute("WW_TRANS_I18N_LOCALE", lc); --------------------编程问答--------------------
这是jsp页面

<script language="javascript">
      function changeLanguage(language) {
          if(language == "en") {
              document.all("language").value = "en";
          } else {
              document.all("language").value = "cn";
          }
          document.forms[0].submit();
      }
  </script>
 </head>
 <body>
  <html:form action="/OwnerAction">
  <input type="hidden" name="language">
    <bean:message key="owner.name" /> :</br>
   <bean:message key="owner.sex" /> :</br>
    <input type="button" name="langEn" value="英文版" onclick="changeLanguage('en')">   
   <input type="button" name="langCn" value="中文版" onclick="changeLanguage('cn')">
  </html:form>
 <body>
</html:html>
--------------------编程问答-------------------- 这是Action

String language = request.getParameter("language");   
   if (language.equals("en")) {
         request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ENGLISH);    
    } else {    
         request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.CHINESE);
    }   
         return mapping.findForward("owner");
     }
 }


这些是重要的代码部分
具体的配置文件楼主可以一一配置 --------------------编程问答-------------------- struts1  建议楼主看看张孝祥的struts视频  里边讲的非常清楚 --------------------编程问答--------------------
引用 15 楼 intlgj 的回复:
这是Action

Java code

String language = request.getParameter("language");   
   if (language.equals("en")) {
         request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ENGLISH);    
 ……


靠 只能这样吗?这样代码感觉很多 --------------------编程问答-------------------- 最简单的方法:
1,把网站的固定文本,写在properties里,一个zn的一个en的,参数名字要一样。
2,根据客户的选择,在ta的session存储客户对语言的选择。
3,编写一个自定义标签,从session中查出客户所选的语言,并选择对应的properties里的数据输出。
4,改写页面,把所有固定文本改成标签生成。 --------------------编程问答-------------------- 去网上搜一下啊,很容易得啊
struts1中就有这样的功能啊
呵呵 --------------------编程问答-------------------- --------------------编程问答-------------------- get 一个locale 然后一通读配置文件 就OK了
--------------------编程问答-------------------- struts里面有个localeAction,至于怎么用你可以看struts下载包里面的mailreader这个例子,很全很好用,多看看官方的例子对你的帮助更大 --------------------编程问答--------------------
引用 15 楼 intlgj 的回复:
这是Action

Java code

String language = request.getParameter("language");   
   if (language.equals("en")) {
         request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ENGLISH);    
 ……




那在配置文件里边怎么写呀,,具体都配置什么。。。。 --------------------编程问答-------------------- 国际化的例子google上一搜一大堆 --------------------编程问答-------------------- http://www.baidu.com/baidu?wd=struts+%B9%FA%BC%CA%BB%AF&tn=monline_dg


http://www.google.com.hk/search?q=struts+%E5%9B%BD%E9%99%85%E5%8C%96&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:zh-CN:official&client=firefox-a --------------------编程问答-------------------- 实现语言切换无非是跟locale相关.  做国际化, 选择语言也就是改变当前的locale, 懂了这个原理之后,去参照Struts/Struts2的文档去做国际化, 相信你不会花多少时间的 --------------------编程问答--------------------
引用 15 楼 intlgj 的回复:
这是Action

Java code

String language = request.getParameter("language");   
   if (language.equals("en")) {
         request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ENGLISH);    
 ……

常用的i18n... --------------------编程问答-------------------- 配置一个property文件
例如:success = 成功 fail = 失败 --------------------编程问答--------------------
引用 28 楼 luonanqin 的回复:
配置一个property文件
例如:success = 成功 fail = 失败

不要意思  是properties文件 --------------------编程问答-------------------- 国际化只是文字上而已,很多网站的中英文,连风格,排版都不一样的,页面重新做的。 --------------------编程问答-------------------- 好好好好好好好 --------------------编程问答--------------------
引用 30 楼 cclovescw 的回复:
国际化只是文字上而已,很多网站的中英文,连风格,排版都不一样的,页面重新做的。



那我不想重新做,在那个properties文件里怎么配置呢。。 --------------------编程问答--------------------
# -- standard errors --
errors.header=<UL>
errors.prefix=<LI>
errors.suffix=</LI>
errors.footer=</UL>

drp.button.query=Search
drp.button.reset=Reset
drp.button.topPage=Top
drp.button.previousPage=Previous
drp.button.nextPage=Next
drp.button.bottomPage=Buttom
drp.button.add=Add
drp.button.delete=Delete
drp.button.modify=Modify
drp.button.uploadImage=Upload Image
drp.button.goback=Go Back
drp.button.colse=Close

drp.page.totalPages=Total Pages
drp.page.currentPage=Current Page 

drp.basedata=Base Data
drp.basedata.item=Item Maintenance

drp.basedata.item.title=Item Information
drp.basedata.item.itemNo=Item No
drp.basedata.item.itemName=Item Name
drp.basedata.item.spec=Spec
drp.basedata.item.pattern=Pattern
drp.basedata.item.category=Category
drp.basedata.item.unit=Unit
drp.basedata.item.image=Image
drp.basedata.item.selectimage=Choose

drp.basedata.item.error.add=Add item failure
drp.basedata.item.error.delete=Delete item failure
drp.database.item.error.findallitem=All items for failure
drp.database.item.error.finditembyid=According to Item Code for failure, ItemCode={0} 
drp.database.item.error.modify=Modify item failure,ItemCode={0}

------------------------------------------
# -- standard errors --
errors.header=<UL>
errors.prefix=<LI>
errors.suffix=</LI>
errors.footer=</UL>

drp.button.query=\u67e5\u8be2
drp.button.reset=\u91cd\u7f6e
drp.button.topPage=\u9996\u9875
drp.button.previousPage=\u4e0a\u9875
drp.button.nextPage=\u4e0b\u9875
drp.button.bottomPage=\u5c3e\u9875
drp.button.add=\u6dfb\u52a0
drp.button.delete=\u5220\u9664
drp.button.modify=\u4fee\u6539
drp.button.uploadImage=\u4e0a\u4f20\u56fe\u7247
drp.button.goback=\u8fd4\u56de
drp.button.colse=\u5173\u95ed

drp.page.totalPages=\u9875\u6570
drp.page.currentPage=\u5f53\u524d\u9875

drp.basedata=\u57fa\u7840\u6570\u636e\u7ba1\u7406
drp.basedata.item=\u7269\u6599\u7ef4\u62a4

drp.basedata.item.title=\u7269\u6599\u4fe1\u606f
drp.basedata.item.itemNo=\u7269\u6599\u4ee3\u7801
drp.basedata.item.itemName=\u7269\u6599\u540d\u79f0
drp.basedata.item.spec=\u7269\u6599\u89c4\u683c
drp.basedata.item.pattern=\u578b\u53f7
drp.basedata.item.category=\u7c7b\u522b
drp.basedata.item.unit=\u8ba1\u91cf\u5355\u4f4d
drp.basedata.item.image=\u56fe\u7247
drp.basedata.item.selectimage=\u9009\u62e9\u56fe\u7247

drp.basedata.item.error.add=\u6dfb\u52a0\u7269\u6599\u5931\u8d25
drp.basedata.item.error.delete=\u5220\u9664\u7269\u6599\u5931\u8d25
drp.database.item.error.findallitem=\u67e5\u8be2\u6240\u6709\u7269\u6599\u5931\u8d25
drp.database.item.error.finditembyid=\u67e5\u8be2\u7269\u6599\u5931\u8d25,\u7269\u6599\u4ee3\u7801={0}
drp.database.item.error.modify=\u4fee\u6539\u7269\u6599\u5931\u8d25,\u7269\u6599\u4ee3\u7801={0}

把上面的两段代码,分别考到两个.properties文件里就看到了...
国际化做起来有点烦哦...要耐心 --------------------编程问答-------------------- 有意思。 --------------------编程问答-------------------- 看出来了  楼主基础。。  这么说了 还要具体代码 --------------------编程问答--------------------
引用 35 楼 wflyxiaonian 的回复:
看出来了 楼主基础。。 这么说了 还要具体代码



不是刚接触吗,先参考别人的,然后自己在琢磨琢磨。。
呵呵呵呵呵。。。。
大家帮帮忙吧、、、、、、、、 --------------------编程问答-------------------- 没有谁是一开始就会的,只要多学习,多思考,多练,很快就不是初级的了,。。。。。。。。。。。。。。。。。。。。。。。。。。 --------------------编程问答-------------------- 用struts2做个国际化支持就OK了! --------------------编程问答-------------------- 其实原来学struts的时候就发现国际化挺麻烦的 
没有办法 如果做一个大的项目的话  那就费劲了
但是不知道其他什么方法。。 --------------------编程问答-------------------- mark!!!1 --------------------编程问答-------------------- 回贴的人这么多。看来都会国际化。
呵呵。 --------------------编程问答-------------------- 我再跟一贴。
国际化这么简单的东西,用得着使用struts吗?不能把问题复杂化。 --------------------编程问答-------------------- 我也正在愁着这个问题呢,楼主要是有了解决的办法一定要告诉我啊,谢谢了 --------------------编程问答-------------------- 我直接用的两套页面,
英文一套页面,中文一套页面
根据用户的选择来决定显示哪个页面。 --------------------编程问答-------------------- 国际化 --------------------编程问答-------------------- mark 过两天要用到这个东西 --------------------编程问答--------------------
引用 33 楼 leejah163 的回复:
Java code
# -- standard errors --
errors.header=<UL>
errors.prefix=<LI>
errors.suffix=</LI>
errors.footer=</UL>

drp.button.query=Search
drp.button.reset=Reset
drp.button.topPage=Top
drp.but……


struts国际化,写两个property文件,一个中文,一个英文,中文的需要转换成ascii。你可以先将文件写成中文的,然后执行命令native2ascii。

具体过程如下:
  1.环境:
      Web服务器: Tomcat 5.0.19
       操作系统: Win2000 Server
         JVM   : jdk 1.4
       数 据 库: Oracle 8.1.7
       开发工具: struts studio 5.2 pro   for  eclipse
  2.先将所有*.jsp 网页中开头处加入

    <%@ page language="java" contentType="text/html; charset=utf-8" %>
     再设置<html:html locale = "true">

  3.然后编辑好两个*.properties文件,放在classes文件夹下你指定的地方,这里是放在/web-inf/classes/com/wiley 下,它们分别是:

    ApplicationResources.properties  (英文资源文件)
    ApplicationResources_zh.properties (中文资源文件)
    随便用什么工具编写都行啊!
  4.将ApplicationResources_zh.properties转码成gb2312。    
将ApplicationResources_zh.properties更名为ApplicationResources_xx.properties
    在DOS命令行进入ApplicationResources_xx.properties所在的文件夹
    使用命令:native2ascii -encoding gb2312 ApplicationResources_xx.properties ApplicationResources_zh.properties(至于你为什么会出现“native2ascii不是内部命令”,,请查其它资料,可能你要设置环境变量,因为他是jdk的文件夹bin下的一个应用程序)
   5.接下来配置struts-config.xml,很简单,我们加入:

   <message-resources parameter="com.wiley.ApplicationResources"/>  就行了;
--------------------编程问答-------------------- struts2 中有i18n这个interceptor这个拦截器 可以做到...字符转换 ,但是要注意:使用中文时 使用native2ascii这个命令将中文装化成 ascii码... --------------------编程问答-------------------- 这个不需要什么框架实现起来也好办的 配置好中英2种属性文件 再用 属性文件读取其中的一个。 --------------------编程问答-------------------- 网上搜索下 一大把 struts国际化 --------------------编程问答-------------------- 不是用种东东叫国际化么? --------------------编程问答-------------------- 最好再你的软件比较成熟之后,再考虑国际化。国际化很简单。但实现,却是个漫长而重复的工作。 --------------------编程问答-------------------- 国际化这个太复杂了,太难受了,写的累死人 --------------------编程问答-------------------- --------------------编程问答-------------------- en_US和zh_CN两个配置文件 --------------------编程问答-------------------- 可以把每个页面都做一个中文的,一个英文的,根据客户浏览器的信息来识别是现实中文的页面还是英文的。 --------------------编程问答-------------------- struts国际化 --------------------编程问答-------------------- 国际化 怎么考虑那些从数据库里面读出来的字段,i18n能做的到只是一些label为中英文双语的 但是从数据库读出来的怎么解决中英双语 --------------------编程问答-------------------- 这个会影响布局吧 --------------------编程问答--------------------
说实话,网站国际化,十个有九个用不到,所以很多都是没有实际中用到过。

struts1的国际化说实话我也没有实际用到过。框架本身提供了国际化支持,这个你可以网上找一些,这个很简单就配置了。

然后是根据#33楼的,要做国际化就需要对你页面的所有汉字进行编码了,正规的即使你的网站不做国际化,你的页面上也应该看到不到任何的汉字,都是转码之后的。

这样你就需要有2套,一套是汉字的,一套是英文的 properties文件,配置好国际化之后struts1会自动根据机器的本地语言调用不同的properties文件,当然你也可以在页面增加按钮主动进行切换。

思路大体就是这样 --------------------编程问答--------------------
引用 19 楼 guliangliang 的回复:
去网上搜一下啊,很容易得啊
struts1中就有这样的功能啊
呵呵


这不是网上么?
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,