在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