Настройка экстернализации строк в Eclipse для использования $ {key} в качестве имени поля - PullRequest
2 голосов
/ 08 октября 2010

Предположим, у меня есть простой код, подобный этому:

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

Теперь я хочу вывести приветствие, возможно, для облегчения интернационализации / локализации / и т. Д.Используя Eclipse, я могу использовать мастер экстернализации строк (источник / внешние строки) и настроить его следующим образом:

alt text

Я могу продолжить работу с мастером, и он предложит эти изменения:

  • Создать файл 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 regex найти / заменить?).

1 Ответ

5 голосов
/ 08 октября 2010

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

Скриншоты

Настройки:

alt text

Затем предложенные изменения:

alt text

Ссылки по теме

...