Мой проект включает в себя несколько плагинов, и каждый плагин содержит файл plugin.properties с почти 20 переводами.
Файл MANIFEST.MF определяет имя файлов свойств, в которых хранятся строки внешних плагинов.
Bundle-Localization: plugin
Название плагина, который я определяю как
%plugin.name
Eclipse будет искать «% plugin.name» в файле plugin.properties во время выполнения.
Какой класс считывает запись MANIFEST.MF Bundle-Localization и в какой момент строка с начальным суффиксом '%' ищется в файле "plugin.properties"?
Я хочу найти и исправить этот класс таким образом, чтобы я мог сначала заглянуть в некоторые другие каталоги / файлы для идентификатора "% plugin.name". С помощью этого нового механизма я могу добавлять фрагменты в мой продукт и перезаписывать отдельные строки в файле «plugin.properties» без изменения исходного плагина.
С помощью этого механизма я мог создать процесс сборки для нескольких клиентов, просто добавив разные фрагменты. Фрагменты, включая имена клиентов и специальные строки, которые они хотят изменить.
Я хочу сделать это таким образом, потому что механизм фрагментов только добавляет файлы в исходный плагин. Когда файл «plugin.properties» существует в плагине, файлы фрагмента «plugin.properties» игнорируются.
ОБНОВЛЕНИЕ 1:
Способ
class ManifestLocalization{
...
protected ResourceBundle getResourceBundle(String localeString) {
}
...
}
возвращает ResourceBundle файла свойств для заданной строки локали.
Когда кто-нибудь узнает, как я могу теперь сначала посмотреть фрагмент, чтобы найти путь к ресурсу, пожалуйста, опубликуйте его.
ОБНОВЛЕНИЕ 2:
Метод в классе ManifestLocalization
private URL findInResolved(String filePath, AbstractBundle bundleHost) {
URL result = findInBundle(filePath, bundleHost);
if (result != null)
return result;
return findInFragments(filePath, bundleHost);
}
Поиск файла свойств и его кеширование. Переводы можно потом получить из кэшированного файла. Проблема в том, что весь файл кэшируется, а не отдельные переводы.
Решение состоит в том, чтобы сначала прочитать файл фрагмента, а не прочитать файл комплекта. Когда оба файла существуют, объедините их в один файл и запишите новый файл свойств на диск. Возвращается URL-адрес нового файла свойств, поэтому новый файл свойств можно кэшировать.