Posso solo farlo funzionare tramite un hack piuttosto massiccio, che non è nemmeno remotamente portatile. Tuttavia, forse ti darà abbastanza da lavorare per creare una soluzione praticabile. (Questo funziona in Java 8.)
ho creato un pacchetto com.sun.javafx.scene.control.skin.resources
, e ha creato un file controls_fi_FI.properties in essa con la sola linea
ProgressIndicator.doneString=Valmis
ho creato un'applicazione di test con il seguente:
import java.util.Locale;
import java.util.ResourceBundle;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.layout.BorderPane;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
System.out.println(ResourceBundle.getBundle("com/sun/javafx/scene/control/skin/resources/controls").getString("ProgressIndicator.doneString"));
BorderPane root = new BorderPane();
ProgressIndicator progressIndicator = new ProgressIndicator(1);
root.setCenter(progressIndicator);
Scene scene = new Scene(root,400,400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Locale.setDefault(new Locale("fi", "FI"));
launch(args);
}
}
L'esecuzione di questa app in molti modi non funziona come desiderato: mentre il System.out.println(...)
produce il risultato corretto, il testo visualizzato nell'indicatore di avanzamento è errato.
Tuttavia, se raggrupparli in fasci com/sun/javafx/control/skin/resources/controls_fi_FI.properties
in un file jar e spostare il file jar al jre/lib/ext
sottodirectory della mia installazione JDK (. Vale a dire la stessa posizione jfxrt.jar
), viene eseguito come previsto (almeno nella mia semplice test; come ho detto, non pretendo che questo sia un qualsiasi tipo di soluzione robusta).
Il problema sembra essere che ControlsResources
viene caricato dal programma di caricamento classe estensione, e quindi sta utilizzando lo stesso programma di caricamento classe per caricare il pacchetto di risorse.
Con una migliore conoscenza dei caricatori di classe di me, potrebbe essere in grado di plasmare questo in una soluzione ragionevole ...
fonte
2014-09-11 17:51:42
Utilizzando un 'ResourceBundle' definito da un file delle proprietà nel classpath dovrebbe funzionare. Puoi mostrare come stai recuperando i valori dal tuo pacchetto? –
Penso che tu abbia frainteso il mio problema. Ho la mia localizzazione che funziona già con ResourceBundle, è solo che sto cercando di localizzare le stringhe di controllo incorporate. Ad esempio, ProgressIndicator ha questa stringa "completata", che viene visualizzata quando il controllo è al 100%. Ho semplicemente copiato il file controls.properties dal jre e l'ho tradotto da solo, e l'ho aggiunto a classpath. – user2499946
Ah, sì: ho frainteso. Grazie per il chiarimento. –