在Eclipse中配置字符串外部化以使用$ {key}作为字段名称

假设我有一个像这样的简单代码:

public class ExternalizeStringDemo { public static void main(String[] args) { System.out.println("Hello world"); } } 

现在,我想将问候外化,或许是为了促进国际化/本地化/等。 使用Eclipse,我可以使用String Externalization向导(Source / Externalize Strings),并像这样配置它:

替代文字

我可以继续向导,它会提出这些更改:

  • 创建Personal Toys/src/Messages.java
  • 创建Personal Toys/src/messages.properties
  • 编辑ExternalizeStringDemo.java
    • "Hello World"变为Messages.getString("DEMO_GREETING")

我的问题很简单:我可以要求Eclipse外部化访问权限,将密钥用作字段名称吗? 也就是说,我希望访问权限是例如Messages.DEMO_GREETING

注意:如果[Substitution pattern]是简单的${key} ,那么生成的代码是Messages."DEMO_GREETING" ,它不是有效的Java代码。


如果这是不可能的,那么下一个最好的东西是什么? (我在想Eclipse正则表达式找到/替换?)。

Eclipse有一个新的字符串外化机制,它正是这样做的; 它使用自己的新消息包而不是Java。 您需要在项目的构建路径中包含org.eclipse.osgi….jar才能使用它。

help.eclipse.org – Java开发用户指南>参考>向导和对话框> Externalize Strings Wizard

  • 使用Eclipse的字符串外部化机制
    • 如果未选中,则使用标准外部化机制, 否则使用新的Eclipse字符串外部化机制。
    • 注意:仅在项目构建路径包含org.eclipse.osgi.util.NLS

之前和之后的内容显示在function文档中 :

旧代码:

 public class MyClass { public void myMethod() { String message; ... // no args message = Messages.getString("key.one"); //$NON-NLS-1$ ... // bind one arg message = MessageFormat.format( Messages.getString("key.two"), new Object[] {"example usage"} ); //$NON-NLS-1$ //$NON-NLS-2$ ... } } 

新代码:

 public class MyClass { public void myMethod() { String message; ... // no args message = Messages.key_one; ... // bind one arg message = NLS.bind(Messages.key_two, "example usage"); //$NON-NLS-1$ ... } } 

截图

设置:

替代文字

那么建议的改变:

替代文字

相关链接

  • eclipse.org/获取和使用Equinox OSGi