安装了一个Eclipse 3.0

以前一直都在用Eclipse 2.1,现在因为有个插件只支持3.0所以下了个最新的版本,来说说我感觉到的几个变化吧:

  1. 界面华丽了很多,图标更像IDEA的风格,而且没感觉速度有什么降低;
  2. 可以用快捷键Ctrl+M最大化和还原Editor了,能节省我很多鼠标操作;
  3. 虽然缺省设置是自动补齐括号的,但似乎对大括号不起作用;
  4. 可以按两次Ctrl+O显示继承来的方法;
  5. 原先用来删除一行代码的Ctrl+E功能变成了呼出Editor下拉列表,好象和Ctrl+F6有点重复,现在删除一行代码的快捷键是Ctrl+D;
  6. 代码可以折叠,但我感觉作用不明显,因为利用原来提供的功能已经足够快速定位到任何代码了;
  7. 代码格式化的功能有所改进,对比较长的代码还能够格式化得比较好看;
  8. 自动生成Getter/Setter可以指定代码插入的位置;
  9. 重构改变量名的时候不必须先保存文件了,我记得在2.1会要求先保存;
  10. 解除注释不是Ctrl+\而是和注释一样Ctrl+/,我本来是喜欢这种方式的,现在已经被2.1带走了;另外好象2.1里没有/* */的注释方式?
  11. 从一个类里向另一个类里复制代码,会自动增加这些代码需要的imports,很贴心和实用的功能。

这些大部分都是JDT部分的改变,可能最大的不同还是在结构上,比如RCP支持等等。不过我目前只是把它当IDE来用,现在机器上两个版本都在,因为2.1已经很好了而且用了那么长时间,实在不忍心就这样扔掉,另外2.1的外观我也很喜欢,显得很专业,即使在3.0里我也是切换到显示方形Tab的模式。

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2004/12/23/80887.html

[Eclipse]国际化你的应用程序(下)

在本文的上篇里,介绍了使用Eclipse的国际化工具对程序中的字符串进行外向化处理(Extenalize),可以看出步骤是十分简单的。实在是很喜欢Eclipse这样的工具,它可以为你做很多事情,干净漂亮,但绝不会在未经你同意的情况下做任何动作,所谓“利器”也!

现在说说在资源中含有参数的情况怎样处理。比如在对话框中要显示信息:“帐户目前还有 900 元,截止日期为 2004-9-1,谢谢!”,因为中间的数字和日期是动态的,所以不能直接放在资源文件中。但是请放心,大可不必为这条信息指定三个资源(被数字和日期分开的三个字符串),可以在资源文件(.properties)中指定资源为这个样子:

my.resource.key=账户目前还有 {0} 元,截止日期为 {1},谢谢!

其中{0}和{1}表示将替换为动态的值,然后在程序里写:

Float amount = ...;
Date dt = ...;
String msg=MessageFormat.format(Messages.getString("my.resource.key"), new Object[]{amount,dt});

这样,msg变量里就是动态生成的提示信息了。你很可能希望对日期进行格式化处理,要实现这个功能也很简单,只要稍微修改一下资源,如下:

账户目前还有 {0} 元,截止日期为 {1,date,yyyy-MM-dd},谢谢!

确实简单吧,不知道你用没用过这个写法,我是在PPP项目中才第一次使用的,所以赶紧介绍一下了,呵呵。

接下来的问题是编码,资源文件写为英文是没有问题的,可以正常显示,但汉字是不能直接写在资源文件里的,要转换为unicode才可以。jdk本身提供了native2ascii工具,可以实现这个功能,但用命令行总是不太方便,虽然也有人很喜欢使用命令行的感觉……如果你愿意Eclipse为你服务,大可以使用我下面介绍的两个插件,利用它们,你根本不需要显式转换编码这一步了。

第一个是Properties Editor,好象是日本人写的,安装后它会与扩展名为.properties的文件相关联,使用它打开资源文件,可以在本地语言与unicode视图之间切换,一般情况下编辑本地语言就可以了,保存时会自动转换为unicode。当需要查找某个资源(值)并修改时这个编辑器非常方便,例如想把资源里所有“你好”改为“您好”,如果面对的是一堆unicode码还真是头疼。安装这个插件需要2.1.1版本以上的Eclipse。

另一个我们在项目中经常使用的插件叫……我还真不知道它全名叫什么,在我这里的打包文件名是“29 Localization Editor”,它是一个非常方便的国际化翻译工具。用它打开扩展名为.properties的文件后,可以新建key,或者新建语言,你要做的只是在表格中把尚未翻译成新语言的资源值填下而已,可以选择只显示未翻译的条目或是全部条目。不过很对不起,我还没找到网上的下载地址,如果需要请和我联系吧。

file
图1 Localization Editor使用界面

好了,关于Eclipse的国际化先介绍到这里了。如果你的应用程序是Eclipse插件,还可以更进一步:把资源文件打成语言包。关于这种方式(Fragment)的介绍,以后有时间再写吧。

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2004/08/23/36011.html

[Eclipse]国际化你的应用程序(上)

file

记得几年前汉化软件一般是用二进制编辑工具在编译后的文件中查找和替换英文单词,这个过程需要使用很多技巧,非常的麻烦。而现在,在开发时对应用程序进行国际化处理已经越来越成为一个必不可少的步骤了。例如这次我参与的项目是给台湾客户做的,他们要求英文和繁体中文两个版本,幸好我们使用的开发工具是Eclipse,利用它的国际化功能可以很方便的将写在代码里的字符串提出到独立的资源文件中,这里用一个简单的例子说明一下这个过程。

在Eclipse里建立一个名为nls-test的工程(也可以国际化已有工程),新建一个类NLSTest,内容如下:

public class NLSTest {
   public NLSTest() {
      String str1="Hello world!";
      System.out.println(str1);
   }
   public static void main(String[] args) {
       new NLSTest();
   }
}

现在,这个类的输出是在代码里写死的,如果要改变就必须修改代码然后重新编译。下面我们利用Eclipse解决这个问题。在导航器(Package Explorer)里右键单击这个文件,选择Source -> Externalize Strings,就会打开一个对话框,在这里列出了该类中尚未国际化的字符串,见下图。

file
图1 国际化向导第一步

单击每个字符串前面的小方块可以选择对该串 1、进行国际化处理 2、永不进行国际化处理 3、这次不处理。我们选择要对这个字符串进行国际化处理,并把它的Key修改为比较好理解的名称hello,注意在对话框最上方可以指定一个通用的前缀,这个值会加在每个Key前面作为最终写在资源文件(扩展名是.properties)里的Key名称。好,按下一步继续。

在这里要指定properties文件的名称,如果需要的话要指定一个用于从properties文件中取资源的类,一般是XXXMessages的格式,再按下一步,会显示一个所作更改的确认列表,确认后按Finish按钮完成向导。

可以看到Eclipse为我们生成了NLSTestMessages.java和NLSTest.properties,打开后者会看到里面只有这么一句:

NLSTest.hello=Hello world!

而前者NLSTestMessages的作用是根据参数Key从后者取对应的字符串值,看一看现在的NLSTest.java就知道了,它的内容现在是这样的(只列出构造方法,main方法同上):

public NLSTest() {
    String str1=NLSTestMessages.getString("NLSTest.hello"); //$NON-NLS-1$
    System.out.println(str1);
}

后面的注释是Eclipse自己用的,标有这个注释的字符串在国际化将被忽略。注释中的数字1表示要忽略的是该行中第一个字符串,如果一行语句里有多个字符串被忽略,将会有多个这样的注释,但数字会各不相同,像这样:

//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 

好了,现在这个类的国际化处理就算完成了。要想让这个类可以根据用户所在地区输出不同语言的结果,可以在NLSTest.properties同一目录下创建名为NLSTest_XX.properties的文件,其中XX表示国家名称,例如中国是zh_CN或zh_TW,法国是FR等等。新创建的文件里也要有和原来文件相同的名值对,但值是不同语言的,NLSTestMessages类会根据用户机器的地区设置值自动从不同的资源文件里取值,这样就达到了国际化的目的。要在自己的机器上测试运行结果,可以在Eclipse的运行设置里面加上这样的参数:-nl zh_TW,这样就不用费力气设置区域了。(2012/5/4更新:此方法可能有误,在Eclipse3.6里是启动程序时在VM arguments里加上-Duser.language=XXX即可以所需要的语言环境启动程序)

国际化的原理很简单,Eclipse提供的这个功能使国际化变得更容易了。不过关于国际化还有一些细节问题,包括对含参数资源的处理,字符编码处理等等,下篇将对它们进行讨论。

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2004/08/08/31262.html

[Eclipse]同步CVS时总是提示错误

我在一台机器上使用CVSNT建立了CVS库,并把项目提交到库中没有问题。 回到家修改了一些代码和配置文件,再同步项目的时候,处理到struts-config.xml时提示:

Error fetching file revisions

不明白为什么,然后上google查了一下,找到两个相关问题的地址。 一个是eclipse cvs的faq,上面关于这个问题的解释如下:

This error, or an error stating that "An error has occurred processing file", occur when the CVSNT server has been configured to use a repository prefix (also referred to as a repository alias). CVSNT provides this mechanism to allow compatibility with the Unix/Linux based command line tools. However, the CVSNT server does not properly map the repository paths that are communicated in text messages. The Eclipse CVS client relies on these text messages to provide advanced features such as synchronization and compare. In order for these features to work properly, the CVSNT server must not be configured to use a repository prefix. Instead, the full path name (i.e. D:cvsroot) must be used (see related question above). 

但我并未使用prefix这个功能。另一个网站上有人说:

I've had two things that relate to this problem. 1) Window->Preferences->Team->Ignored resources includes a pattern to ignore files called 'tags' 2) the CVS/Root file used a different case to the repository listed in CVS NT. dion ? 3/24/04; 10:50:48 PM

似乎也不是这两条的原因,因为我的eclipse里关于cvs的设置从未修改过;大小写我也改过,不过还要找时间去实验室看看建库的那台机器里到底是什么样的写法(我判断不是这个原因)。 实在没办法,只能找机会在建库的机器上把这两条删掉重新添加了,甚至把库里整个项目删掉重来了。

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2004/07/28/28067.html