Настройка экстернализации строк в Eclipse для использования ${key} в качестве имени поля
Предположим, у меня есть простой код, подобный этому:
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 вывести доступ к внешнему ключу для использования ключа вместо имен полей? То есть я хочу чтобы доступ был например Messages.DEMO_GREETING
,
Примечание: если [Substitution pattern]
это просто ${key}
, то сгенерированный код Messages."DEMO_GREETING"
, который не является допустимым кодом Java.
Если это невозможно, то что будет дальше? (Я думаю, что Eclipse Regex найти / заменить?).
1 ответ
Eclipse имеет новый механизм экстернализации строк, который делает именно это; он использует свой собственный новый пакет сообщений вместо Java. Вы должны включить org.eclipse.osgi….jar
в пути сборки вашего проекта, чтобы использовать его.
help.eclipse.org
- Руководство пользователя по разработке Java> Справка> Мастера и диалоги> Мастер Externalize Strings
- Использовать механизм экстернализации строк 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$ ... } }
Скриншоты
Настройка:
Тогда предложенные изменения: