寻求解决方案

ooo19841080xinxin 2008-10-17 12:53:15
一个N年前的项目,已经完成,现在要做国际化,能否给个方案.
...全文
145 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjjzg 2008-10-18
  • 打赏
  • 举报
回复
路过学习带帮顶
  • 打赏
  • 举报
回复
举个简单例子:Hello.java

MyResource_en_US.properties
MyResource_zh_CN.properties

//MyResource_zh_CN.properties
msg=\u4f60\u597d,{0}!\u4eca\u5929\u662f {1}.

//MyResource_en_US.properties
msg=Hello,{0}!Today is {1}.

//Hello.java


import java.text.MessageFormat;
import java.util.Date;
import java.util.Locale;
import java.util.ResourceBundle;

public class Hello {

static Locale currentLocale=null;
public static void main(String[] args)
{
if(args.length==2)
{
currentLocale=new Locale(args[0],args[1]);
}
else
{
currentLocale=Locale.getDefault();
}

ResourceBundle bundle=ResourceBundle.getBundle("MyResource", currentLocale);
String msg=(String)bundle.getObject("msg");
MessageFormat mf=new MessageFormat("");
mf.setLocale(currentLocale);
mf.applyPattern(msg);
Date now=new Date();
Object[] msgParams={"yeeku",now};
System.out.println(mf.format(msgParams));
}

}
  • 打赏
  • 举报
回复
楼主通过修改原来程序来达到i18n(就是internationalization, 国际化,由于首字母"i"和末尾字母"n"间有18个字符,所以简称i18n.)的要求:将那些和界面显示有关系的资源单独提取出来到资源文件里面.Java里面的资源文件叫做ResourceBundle,它分成两种,一种是ListResourceBundle,另一种是PropertyResourceBundle,。当一个程序需要一些Locale相关的资源,例如字符串资源的时候,它可以从resource bundle里面将需要的本地化资源装入。
  
  需要注重的是:为了能够正确显示中文字符,程序里的部件需要选择指定字体,例如在显示中文的时候使用"MS Song",不然界面有中文字符的时候会出现没有意义的方框。

liky5387 2008-10-18
  • 打赏
  • 举报
回复
很简单,你现在要做的事情就是:(比如你现有的是中文的。)要用到一个东西:ResourceBundle
一,把你的程序中所以需要用到的中文,都提取出来,放到execl中,按类把他整里出来。(为了将来的灵活性,就算是相同的,也不要合到一起用同一个,说不定某处的某天会被改掉。)
二,为每个单位的字符中起个英文名的key。
三,把中文写符串处用ResourceBundle.getString(key);
四,把整理出来的中文翻译成你想要的言语,然后用英文名的key与之一一对应该,放到属性文中。注意属性文件的命,不管你怎么起名,都以_XX.properties结尾,XX表语言的种类,en为英语,jp为日语,zh为中文。。。。。。。。。
五,注意特殊处理,如表示钱的时个:日元符号要钱数的后面,偶元符号在钱数的前面。。这可以通过在属性文件中设置一个号language的KEY来与ResourceBundle取得local处理。
如;
if ("JP".equals(ClientResource.getString("language"))) {
btn_1000.setText(ResourceBundle.getString("amount1") + ResourceBundle.getString("text.yen"));
} else {
btn_1000.setText(ResourceBundle.getString("text.yen") + ResourceBundle.getString("amount1"));
}
这样就可以了。。。
以谓了多语言就是这么回事,自己开发语言包。。。。

sunyujia 2008-10-17
  • 打赏
  • 举报
回复
最简单的方法
http://topic.csdn.net/u/20081002/12/9a594a47-18ba-4875-a627-49120b27362e.html
richard_2010 2008-10-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 singedcat 的回复:]
修改页面编码为utf-8

把所有显示出来的文本部分提取出来放到一个资源文件里

代码中有大量的地方会因为乱码而须要修改

。。。

其它大家补充
[/Quote]

我所能想到的和这个类似,并且我们公司目前也是这样做的。
以梦为马 2008-10-17
  • 打赏
  • 举报
回复
修改页面编码为utf-8

把所有显示出来的文本部分提取出来放到一个资源文件里

代码中有大量的地方会因为乱码而须要修改

。。。

其它大家补充
bluesmile979 2008-10-17
  • 打赏
  • 举报
回复
赫赫,也不是。主要也不太清楚你具体状况是怎么样的。国际化只是一个很含糊的事情,具体问题都是不一样的。有具体问题才能讨论。只是说国际化这种共通的课题,那么最好去找一个系统说明的文章。论坛里面是不会有什么结果的。除非你指望谁给你贴一个文章的link.
ooo19841080xinxin 2008-10-17
  • 打赏
  • 举报
回复
我问的这个问题是不是很弱?
bluesmile979 2008-10-17
  • 打赏
  • 举报
回复
java本身不是提供了一个国际化方案?

那个用native_ascii.exe转换那个方案。

JSP,HTMl之类的用到GBK之类的话,自己写段程序gbk都专程utf-8好了。
ooo19841080xinxin 2008-10-17
  • 打赏
  • 举报
回复
o
laorer 2008-10-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhj92lxs 的回复:]
顶1楼
[/Quote]....
zhj92lxs 2008-10-17
  • 打赏
  • 举报
回复
顶1楼
justinavril 2008-10-17
  • 打赏
  • 举报
回复
1#的帖子挺有价值的 呵呵


不过貌似一般的软件在设计之初就会考虑到这个问题吧?现在不都是代码与数据分开的吗 把数据部分换了就可以了
随着Spring框架最新版本——3.0版的发布,Spring平台已经发展成熟,成为Java、Java虚拟机、Groovy、NET或者Action-Script开发人员最强大、最具革命性的解决方案之一。 《Spring攻略(第2版)》是Spring平台的深入指南,它引导你进入Spring 3及其辅助框架的最新技术。《Spring攻略(第2版)》不仅为你全面而又深入地讲解各种概念,并且在每一章中都配备了一系列详细的代码示例,以帮助读者在实际的工作中迅速应用于实战。 SpringSource为核心框架添加了许多部件。这些部件不仅简化了Java EE之上的API,并且为Java EE所忽略的问题提供了第一流的完整解决方案。构建于Spring IoC容器组件模型之上的这些Spring3部件提供了集成、批处理、OSGi、Ajax和Flex集成、状态式的Web应用、REST风格Web服务、富客户端用户界面、Google AppEngine开发、基于云的部署、消息、数据访问、Web服务等多种功能。而且,Spring能很好地与其他辅助框架(包括业务过程管理、群集缓冲以及网格计算)进行协作。 你在寻求和Ruby on Rails一样的一体化架构吗?那么你会被Grails等Spring替代方案所深深吸引,对于Groovy开发人员来说,Grails具有难以置信的能力和生产率。如果你是寻求快速、轻量级的应用构建方法的Java开发人员,你会喜欢上Spring Roo,它能让你快速地通过应用的原型阶段,进入维护阶段,形成清晰的、面向最佳实践的代码。 以上所有这些主题,在这本以丰富代码为基础的攻略中都能找到。我们希望你能够享受Spring平台的学习和使用。 Gary Mak,Josh Long和Daniel Rubio。 作者简介 作者:(美国)麦克(Gary Mak) (美国)隆(Josh Long) (美国)卢比奥(Daniel Rubio) 译者:陈宗恒 姚军 蒋亮 麦克,Gary Mak,Meta-Archit软件技术有限公司的创立者及首席顾问。 隆,Josh Long,SpringSource的Spring开发倡导人。 卢比奥,Daniel Rubio,超过10年的企业级和Web开发经验顾问。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧