寻求解决方案 一个N年前的项目,已经完成,现在要做国际化,能否给个方案. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最简单的方法http://topic.csdn.net/u/20081002/12/9a594a47-18ba-4875-a627-49120b27362e.html java本身不是提供了一个国际化方案?那个用native_ascii.exe转换那个方案。JSP,HTMl之类的用到GBK之类的话,自己写段程序gbk都专程utf-8好了。 赫赫,也不是。主要也不太清楚你具体状况是怎么样的。国际化只是一个很含糊的事情,具体问题都是不一样的。有具体问题才能讨论。只是说国际化这种共通的课题,那么最好去找一个系统说明的文章。论坛里面是不会有什么结果的。除非你指望谁给你贴一个文章的link. 修改页面编码为utf-8把所有显示出来的文本部分提取出来放到一个资源文件里代码中有大量的地方会因为乱码而须要修改其它大家补充 很简单,你现在要做的事情就是:(比如你现有的是中文的。)要用到一个东西: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"));}这样就可以了以谓了多语言就是这么回事,自己开发语言包。 楼主通过修改原来程序来达到i18n(就是internationalization, 国际化,由于首字母"i"和末尾字母"n"间有18个字符,所以简称i18n.)的要求:将那些和界面显示有关系的资源单独提取出来到资源文件里面.Java里面的资源文件叫做ResourceBundle,它分成两种,一种是ListResourceBundle,另一种是PropertyResourceBundle,。当一个程序需要一些Locale相关的资源,例如字符串资源的时候,它可以从resource bundle里面将需要的本地化资源装入。 需要注重的是:为了能够正确显示中文字符,程序里的部件需要选择指定字体,例如在显示中文的时候使用"MS Song",不然界面有中文字符的时候会出现没有意义的方框。 举个简单例子:Hello.javaMyResource_en_US.propertiesMyResource_zh_CN.properties//MyResource_zh_CN.propertiesmsg=\u4f60\u597d,{0}!\u4eca\u5929\u662f {1}.//MyResource_en_US.propertiesmsg=Hello,{0}!Today is {1}.//Hello.javaimport 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));}} Java连接Excel 请教高手:有了多态,instanceof存在的理由是什么? Jtable 拖放问题?...急......在线等候 通过SmartInvoke用java与flex轻松构建cs程序 jsp怎么实现文件上传和页面的值传递??? 关于Choice的初始值问题,谁知道给解答一下,谢谢了 谁有《Java 2 参考大全》的源代码? 关于javascript中的无函数名的函数该如何调用? 我的JPanel为什么不能自动重画?filechooser的图象为什么会残留下来? 高分求 JDBC多事务的实例 java通常指的对象锁具体是指什么 SWT中实时显示时间出错
http://topic.csdn.net/u/20081002/12/9a594a47-18ba-4875-a627-49120b27362e.html
一,把你的程序中所以需要用到的中文,都提取出来,放到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"));
}
这样就可以了
以谓了多语言就是这么回事,自己开发语言包。
需要注重的是:为了能够正确显示中文字符,程序里的部件需要选择指定字体,例如在显示中文的时候使用"MS Song",不然界面有中文字符的时候会出现没有意义的方框。
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));
}}