Czy istnieje sposób zmiany języka tekstów ColorPicker
, takich jak "Niestandardowy kolor ...", "Bieżący kolor", "Nowy kolor", "Odcień", "Nasycenie", "Jasność" "," Opacity "," Save "," Use "," Cancel "?Język wybieraka kolorów JavaFX
Odpowiedz
EDIT: Poniżej odpowiedź jest dla tych, którzy potrzebują trochę więcej egzotyczne język. Jeśli używasz jednego z nich: de, es, fr, it, ja, ko, pt, sv, zh
@ sergey-grinev dostarczył wystarczającą odpowiedź.
Wymyśliłem dwa rozwiązania. Obie opierają się na pliku properties
. Można tworzyć własne na podstawie przykładów znalezionych w com/sun/javafx/scene/control/skin/resources/
w jxfrt.jar
dostarczanych z JRE.
Wszystkie przykłady będą korzystać z polskiego ustawienia narodowego (new Locale("pl", "PL")
), które nie jest wbudowane.
Rozwiązanie 1
Tworzenie pliku JAR z następującą strukturę (zmiana odpowiednio przyrostkiem)
com/sun/javafx/scene/control/skin/resources/controls_pl_PL.properties
i umieścić go w
<path_to_JVM>/lib/ext
to wszystko.
Nie jestem pewien, co mówi licencja o umieszczaniu niestandardowych plików w pakietach com.sun.*
, więc tutaj jest inne rozwiązanie.
Rozwiązanie 2
Tworzenie properties
plik jak wyżej, ale można nazwać cokolwiek i umieścić go tam, gdzie chcesz. Powiedzmy, że to będzie
path/to/my/resources/polish.properties
Utwórz dwie klasy - ResourceBundle.Control
i ResourceBundleControlProvider
(read more) jak ten.
public class CustomLocaleFxResourceBundleControl extends ResourceBundle.Control {
static final String FX_BASE_NAME = "com/sun/javafx/scene/control/skin/resources/controls";
private static final Locale MY_LOCALE = new Locale("pl", "PL");
@Override
public String toBundleName(String baseName, Locale locale) {
if (FX_BASE_NAME.equals(baseName) && MY_LOCALE.equals(locale))
return "path/to/my/resources/polish"; // without extension
return super.toBundleName(baseName, locale);
}
}
public class CustomLocaleFxResourceBundleControlProvider implements ResourceBundleControlProvider {
private static final ResourceBundle.Control MY_RESOURCE_BUNDLE_CONTROL = new CustomLocaleFxResourceBundleControl();
public ResourceBundle.Control getControl(String baseName) {
if (CustomLocaleFxResourceBundleControl.FX_BASE_NAME.equals(baseName))
return MY_RESOURCE_BUNDLE_CONTROL;
return null;
}
}
Kompilacja tych klas i umieścić je w pliku JAR wraz z zasobami i META-INF
folderu. META-INF
folder powinien mieć następującą strukturę
META-INF/services/java.util.spi.ResourceBundleControlProvider
java.util.spi.ResourceBundleControlProvider
to plik tekstowy, który tylko linia jest droga do ResourceBundleControlProvider
klasie.W naszym przypadku jest to po prostu
CustomLocaleFxResourceBundleControlProvider
Kompletna JAR umieścić w
<path_to_JVM>/lib/ext
Po raz pierwszy wprowadzam takie zmiany i mam pewne problemy.) Używam Eclipse (jdk 1.8.40) i nie mogę znaleźć pliku właściwości, o którym wspomniałeś powyżej. – Alyona
W '
Dziękuję, pobrałem potrzebny plik właściwości i wprowadziłem w nim zmiany. zarówno CustomLocaleFxResourceBundleControlProvider, jak i CustomLocaleFxResourceBundleControl w bin \ com \ mój folder (gdzie mainApp to), umieść tam również plik controls_pl.properties, ale nie mam pojęcia, jak "skompiluj te klasy i umieść je w pliku JAR razem z folderem zasobów i META-INF. Folder META-INF powinien mieć następującą strukturę. "Po prostu nie mogę zrozumieć, co dokładnie robić. Jestem na poziomie początkującym z Javą i nie mogę jeszcze wszystkiego zrozumieć – Alyona
Najprostszym sposobem jest użycie jednego z predefiniowanych ustawień regionalnych, na przykład dodać kolejną linię przed utworzeniem ColorPicker:
Locale.setDefault(Locale.FRENCH);
Zobaczysz kolejną UI:
Działa w języku francuskim. Ale co zrobić, jeśli muszę utworzyć ColorPicker dla innych języków, takich jak rosyjski lub estoński? Próbowałem użyć 'Locale dLocale = new Locale (" ru "); Locale.setDefault (dLocale); ', ale to nie działa. – Alyona
@ user3629015 lol, rosyjski i estoński to dwa języki, którymi posługuję się oprócz angielskiego :) Spójrz na odpowiedź 3ph3r w tym przypadku. –
почему все всегда забывают про русских? ( – sinedsem
- 1. NSTimer nie uruchamia wybieraka
- 2. mniej css za pomocą wybieraka last-child
- 3. Programowa zmiana stylu listy ListView wybieraka
- 4. JavaFX CSS: Funkcje niestandardowe
- 5. Język skryptowy PHP lub język programowania?
- 6. Powtarzanie kolorów
- 7. jQuery string-zmienna jak id wybieraka powrócić pustego obiektu
- 8. Włączanie/wyłączanie wybieraka bootstrap przez pole wyboru ickeck
- 9. uzyskać informacje kontaktowe z wybieraka kontaktu z Androidem
- 10. Jak zmienić język aplikacji, gdy użytkownik wybierze język?
- 11. Nie ma czegoś takiego jak "język skompilowany" lub "język interpretowany"
- 12. jak zmusić język Android
- 13. Język C: znaczenie operatora "#"?
- 14. IViewLocalizer zwraca nieprawidłowy język
- 15. język JQuery Datepicker
- 16. Skompilowany język dynamiczny
- 17. Język kompilacji do C
- 18. CodeMirror - język auto-wykrywanie
- 19. język skryptów w qlikvew
- 20. Rozszerzenie Regex i język
- 21. Znajdź bieżący język użytkownika
- 22. Jak zmienić język WebDrivera?
- 23. jQuery język przeglądarki wykrywanie
- 24. Android arabski Język
- 25. język bez, jeśli jest?
- 26. Język zmiany Ajax
- 27. Język potrójnych obiektów MarkLogic
- 28. Lemat pompowania (język regularny)
- 29. funkcjonalny język asemblerowy
- 30. Unity obsługuje język arabski
Do przeliczenia standardowym oknie systemu na inne języki jest kilka informacji tutaj: https://stackoverflow.com/a/45980313/3937190 –