2015-05-13 6 views
7

ich zur Zeit eine JavaFX Anwendung mit slowakischer Sprachlokalisierung und innerhalb der Anwendung zu entwickeln I einen Alert Dialog bin mit Ausnahmen mit erweiterbarem Inhaltsbereich zeigt als Bilder dargestellt unten auf:JavaFX 8 Lokalisierung von internen Elementen des Dialogs

show details - alert screen hide details - alert screen

ich mag würde diesen Dialog haben vollständig übersetzt, die mit gut läuft Header, Title oder Content aber ich kann nicht einen Weg finden, wie man die Show/Hide details Etikett des dehnbaren Bereich zu übersetzen.

So meine Frage kann ein bisschen verallgemeinert werden: Wie Text von JavaFX interne Elemente zu ändern/zu übersetzen?

Vielen Dank im Voraus für jede Hilfe.

PS: Für die Erstellung dieser Alert-Dialog für Ausnahmen I-Code verwende als gefunden auf code.makery.ch

+0

sieht aus wie ein Fehler für mich - wenn die Sprachumgebungen verfügbar sind, sollten alle lokalisierbaren Zeichenfolgen übersetzt werden. Sie könnten in Erwägung ziehen, einen Bericht in fx issue tracker einzureichen (wenn dieser noch online ist, wird er irgendwann in diesem Monat mit dem jdk-Tracker zusammengeführt) – kleopatra

+0

@kleopatra Ich verwende keine korrekte Lokalisierung mit Einstellung von Gebietsschemata oder so. Ich stelle einfach alle Labels ein, die öffentliche Setter haben. Soll ich die richtige Lokalisierung verwenden, um es zu lösen? –

+0

hmm .. Slowakisch wird nicht von Core JDK zur Verfügung gestellt? Oder einfach nicht von fx? – kleopatra

Antwort

3

Für Ihren speziellen Anwendungsfall können Sie einen anderen Zuhörer expandedProperty hinzufügen, welche die Texte überschreiben von „Details Button“ gezeigt :

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); 
}); 

Für häufiger Hack siehe Localizing JavaFx Controls. Von dort müssen Sie die folgenden Schlüssel zu Ihrer benutzerdefinierten Eigenschaftendatei hinzufügen:

+0

Das sieht wirklich gut aus, aber ich habe Probleme beim Nachschlagen der '' '.details-button''' Hyperlink. Im Debugger kann ich sehen, dass' '' dialogPane''' die Eigenschaft '' 'detailsButton''' hat, aber die Lookup-Methode gibt' '' null''' zurück und ich weiß es nicht Wie ich es von dort bekommen habe. Ich habe mehrere Variationen der Schnur versucht, aber ohne Erfolg. –

+0

@Supermartzin Works für mich. Sie haben wahrscheinlich Ihren Code nicht in Platform.runLater(). –

+0

@ NikšaBaldun Thanks! Ich habe das vergessen Teil und ich fand auch heraus, dass ich eine andere Eigenschaft verwendet habe. Jetzt funktioniert alles gut! –

Verwandte Themen