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

发布于 2024-09-27 01:43:17 字数 967 浏览 0 评论 0原文

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

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

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

alt text

I可以继续执行向导,它将建议进行以下更改:

  • 创建文件 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 正则表达式查找/替换?)。

Suppose I have a simple code like this:

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

Now, I want to externalize the greeting, perhaps to facilitate internationalization/localization/etc. Using Eclipse, I can use the String Externalization wizard (Source/Externalize Strings), and configure it like this:

alt text

I can proceed with the wizard and it will propose these changes:

  • Create file Personal Toys/src/Messages.java
  • Create file Personal Toys/src/messages.properties
  • Edit ExternalizeStringDemo.java
    • "Hello World" becomes Messages.getString("DEMO_GREETING")

My question is simple: can I ask Eclipse to externalize the access to use the key as field names instead? That is, I want the access to be e.g. Messages.DEMO_GREETING.

Note: if the [Substitution pattern] is simple ${key}, then the generated code is Messages."DEMO_GREETING", which is not a valid Java code.


If this is not possible, then what's the next best thing? (I'm thinking Eclipse regex find/replace?).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

删除会话 2024-10-04 01:43:17

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

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

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

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

旧代码:

公共类 MyClass {
   公共无效我的方法(){
      字符串消息;
      ...
      // 无参数
      消息 = Messages.getString("key.one"); //$NON-NLS-1$
      ...
      // 绑定一个参数
      消息 = MessageFormat.format(
          Messages.getString("key.two"),
          新对象[] {“示例用法”}
        ); //$NON-NLS-1$ //$NON-NLS-2$
      ...
   }
}

新代码:

公共类 MyClass {
   公共无效我的方法(){
      字符串消息;
      ...
      // 没有参数
      消息 = Messages.key_one;
      ...
      // 绑定一个参数
      message = NLS.bind(Messages.key_two, "示例用法"); //$NON-NLS-1$
      ...
   }
}

屏幕截图

设置:

alt text

然后建议的更改:

alt text

相关链接

Eclipse has a new string externalization mechanism that does exactly this; it uses its own new message bundle instead of Java's. You need to include the org.eclipse.osgi….jar in your project's build path to use it.

help.eclipse.org - Java development user guide > Reference > Wizards and Dialogs > Externalize Strings Wizard

  • Use Eclipse's string externalization mechanism
    • If unchecked the standard externalization mechanism is used, otherwise the new Eclipse string externalization mechanism is used.
    • Note: Only present if the project build path contains org.eclipse.osgi.util.NLS

The before-and-after is shown in the feature documentation:

Old Code:

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

New Code:

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

Screenshots

The setup:

alt text

Then the proposed changes:

alt text

Related links

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文