2015-05-13 3 views
7

В настоящее время я занимаюсь разработкой приложений JavaFX с локализацией словацкого языка и внутри приложения Я использую диалог Alert для показа исключений с возможностью расширения содержимого панели, как показано ниже на изображениях:JavaFX 8 Локализации внутренних элементов Диалога

show details - alert screen hide details - alert screen

Я хотел бы, чтобы этот диалог полностью переведенный который идет хорошо с Header, Title или Content, но я не могу найти способ, как перевести Show/Hide details метки расширяемой области.

Так что мой вопрос может быть немного обобщен: как изменить/перевести текст внутренних элементов JavaFX?

Заранее благодарим за любую помощь.

PS: Для создания этого диалога оповещения для исключения я использую код, как найти на code.makery.ch

+0

выглядит как ошибка для меня - если доступны локали, все локализуемые строки должны быть переведены. Вы можете рассмотреть вопрос о подаче отчета в трекер fx issue (если он все еще в сети, слышал, что в этом месяце он будет объединен с ядром jdk tracker) – kleopatra

+0

@kleopatra Я не использую правильную локализацию с настройкой Locales или что-то в этом роде. Я просто установил все ярлыки, в которых есть доступные публичные сеттеры. Должен ли я использовать правильную локализацию для ее решения? –

+0

hmm .. Словацкий не предоставляется ядром jdk? Или просто не по fx? – kleopatra

ответ

3

Для вашего конкретного случая использования, вы можете добавить еще один слушатель expandedProperty который перепишут тексты, показанные на «кнопки данных» :

Platform.runLater(() -> 
{ 
    Hyperlink detailsButton = (Hyperlink) alert.getDialogPane().lookup(".details-button"); 

    alert.getDialogPane().expandedProperty().addListener(
      (ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> 
    { 
     detailsButton.setText(newValue ? "My less text" : "My more text"); 
    }); 

    // trigger listeners 
    alert.getDialogPane().setExpanded(true); 
    alert.getDialogPane().setExpanded(false); 
}); 

Для более распространенного взлома см. Localizing JavaFx Controls. Оттуда вам нужно поместить следующие ключи в свой файл настраиваемых свойств:

// translate these 
Dialog.detail.button.more = Show Details 
Dialog.detail.button.less = Hide Details 
+0

Это выглядит действительно хорошо, но у меня есть проблема для поиска '' '.details-button'''. В отладчике я вижу, что' '' dialogPane''' имеет свойство '' 'detailsButton''', но метод поиска возвращает' '' null''', и я не знаю как это получить оттуда.Я пробовал несколько вариантов строки, но без успеха. –

+0

@Supermartzin Работает для меня. Вероятно, вы не разместили свой код внутри Platform.runLater(). –

+0

@ NikšaBaldun Спасибо! Я забыл, что и я также узнал, что я использую другое свойство. Теперь все работает хорошо! –

Смежные вопросы