2

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

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

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

替代文字

我可以继续使用向导,它会提出以下更改:

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

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

注意:如果[Substitution pattern]是 simple ${key},则生成的代码是Messages."DEMO_GREETING",这不是有效的 Java 代码。


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

4

1 回答 1

5

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

help.eclipse.org- Java 开发用户指南 > 参考 > 向导和对话框 > 外部化字符串向导

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

之前和之后显示在功能文档中:

旧代码:

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$
      ...
   }
}

截图

设置:

替代文字

然后建议的更改:

替代文字

相关链接

于 2010-10-08T02:38:10.093 回答