Eclipse RCP - Использование фрагмента для перевода

У меня короткий вопрос об использовании фрагментов в Eclipse RCP. В настоящее время я использую механизм сообщений для перевода своих строк. Файлы Messages.java и * .properties находятся в моем плагине, и все работает нормально. Теперь я хотел бы использовать разные строки / переводы для разных клиентов. Насколько я знаю, здесь возможно решение Plugin-Fragments. Я читал, что невозможно переопределить файлы в подключаемом модуле хоста с помощью фрагмента. Поэтому я думаю, что мне нужно использовать 2 разных фрагмента, которые обеспечивают правильный файл * .properties. На следующем изображении показана схема, которую, как мне кажется, я должен использовать.

Host-Fragment-Usage

После настройки проектов фрагментов (плагины хоста установлены, а файлы * .properties находятся в пакете с одинаковым именем, чем у хоста), я хотел бы запустить свое приложение RCP через Eclipse IDE. Также сконфигурированы 2 конфигурации запуска. При использовании консоли OSGI я вижу, что мой фрагмент присутствует и РАЗРЕШЕН.

Но моя проблема в том, что предоставленные строки / переводы из фрагментов не используются. Каждый раз, когда я запускаю приложение, используются некоторые старые строки / переводы (те, которые использовались до перемещения файлов свойств во фрагменты).

Кто-нибудь знает, что я делаю не так, и правильное ли мое решение?

Заранее спасибо :)


person AnarchoEnte    schedule 08.12.2015    source источник
comment
Я не уверен, но похоже, что вы используете два идентичных фрагмента - возможно, это просто копирование и вставка, но вы не можете предоставить два языковых пакета (Deutschland) в двух фрагментах ....   -  person Martin Frank    schedule 08.12.2015
comment
вы обычно создаете фрагмент для поддержки немецкого языка и другой фрагмент (возможно) для поддержки итальянского языка ...   -  person Martin Frank    schedule 08.12.2015
comment
Я создал оба плагина через New Wizard - без копирования и вставки. У меня 2 разных продукта и 2 разных конфигурации запуска. В зависимости от конфигурации я добавляю Fragment1 OR Fragment2 - но не оба одновременно. У каждого продукта должны быть свои сообщения, свойства и немецкий перевод. Сам плагин хоста не предоставляет никаких сообщений о свойствах или переводе на немецкий язык.   -  person AnarchoEnte    schedule 08.12.2015
comment
звучит разумно - у вас есть два продукта с разной конфигурацией ... вот для чего нужны фрагменты! ... ваша проблема в том, что ни фрагмент1, ни фрагмент2 не используются ни в какой конфигурации?   -  person Martin Frank    schedule 08.12.2015
comment
Да, фрагменты не используются, даже если они присутствуют при просмотре консоли OSGI: 31 ACTIVE ‹host-plugin-name› _2.0.0.qualifier Fragments = 32 32 РАЗРЕШЕНО ‹fragment-name› _2.0.0. квалификатор Мастер = 31   -  person AnarchoEnte    schedule 08.12.2015


Ответы (2)


вы должны запустить продукт eclipse с правильной конфигурацией - если вы хотите увидеть (и протестировать) поддержку вашего языка, вам нужно запустить eclipse с правильной информацией !! введите описание изображения здесь

попробуйте установить язык напрямую

-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl de_DE -consoleLog

person Martin Frank    schedule 08.12.2015
comment
К сожалению, это тоже не работает. Интересно, что используются эти строки / переводы, которые были помещены в host-plugin до того, как я переместил их во фрагменты. Даже если я изменю свойства в своих фрагментах, строки не будут использоваться. Может быть, Eclipse использует какой-то механизм кеширования? - person AnarchoEnte; 08.12.2015
comment
если вы запустите приложение eclipse, вы увидите, какой контент установлен? Помощь - ›О программе -› Детали установки - ›Плагины? ваш Фрагмент должен быть указан там ... - person Martin Frank; 08.12.2015
comment
Host-Plugin и фрагмент установлены - person AnarchoEnte; 08.12.2015
comment
вы можете показать, как выглядит ваш Messages.java? может проблема внутри - person Martin Frank; 08.12.2015
comment
import org.eclipse.osgi.util.NLS; общедоступный класс Messages расширяет NLS {private static final String BUNDLE_NAME = ‹plugin-name› .ui.internal.messages; // $ NON-NLS-1 $ public static String LoginAgent_LoginServerNotAvaliabeErrorText1; общедоступная статическая строка ...; ‹Другие строки› static {// инициализировать пакет ресурсов NLS.initializeMessages (BUNDLE_NAME, Messages.class); } Приватные сообщения() { } } - person AnarchoEnte; 08.12.2015
comment
что Messages.java в порядке! хорошо, меня нет, извини, я не могу больше помочь: - $ - person Martin Frank; 08.12.2015

Предоставляете ли вы заголовок манифеста?

Bundle-Localization: plugin
person Peter Kirschner    schedule 08.12.2015
comment
Я добавил это в свой фрагмент Manifest.MF, но безуспешно :( Фрагмент находится в статусе РАЗРЕШЕН и имеет ссылку на мой хост-плагин, который находится в статусе АКТИВНЫЙ. Я думаю, что соединение в порядке, но сообщения, представленные в фрагмент не используется. Может быть, Eclipse кэширует какие-то данные? Используемые сообщения были перемещены (!) с хоста во фрагмент и изменены. Но старые сообщения все еще используются - person AnarchoEnte; 10.12.2015
comment
Это должно быть внутри хоста. Не во Фрагменте. - person Peter Kirschner; 10.12.2015
comment
К сожалению, безуспешно. Я начинаю спрашивать себя, можно ли добавить messages.properties через фрагмент в плагин хоста. Но ИМХО это должно быть возможно через фрагменты. Свойства - файлы расположены внутри пакета, названного так же, как и в плагине хоста. - person AnarchoEnte; 10.12.2015
comment
Вы пробовали процесс, описанный здесь? Это определенно возможно. - person Peter Kirschner; 10.12.2015