pol*_*nts 2 java eclipse internationalization string-externalization
假设我有一个像这样的简单代码:
public class ExternalizeStringDemo {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我想将问候外化,或许是为了促进国际化/本地化/等.使用Eclipse,我可以使用String Externalization向导(Source/Externalize Strings),并像这样配置它:

我可以继续向导,它将提出这些更改:
Personal Toys/src/Messages.javaPersonal Toys/src/messages.propertiesExternalizeStringDemo.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
之前和之后的内容显示在功能文档中:
旧代码:
Run Code Online (Sandbox Code Playgroud)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$ ... } }新守则:
Run Code Online (Sandbox Code Playgroud)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$ ... } }
设置:

那么建议的改变:

| 归档时间: |
|
| 查看次数: |
9587 次 |
| 最近记录: |