Я хотел бы изменить язык моего приложения с английского на голландский, когда обновляю свой экран (java и javaFX). Кто-нибудь знает, с чего начать, или есть функция изменить язык в приложении?изменение языка с английского на голландский
0
A
ответ
1
Вы должны поместить все строки в файлы свойств, используя механизм именования, описанный в ResourceBundle
documentation.
Затем вы можете создать для представления текущего языкового стандарта (например, языка) и привязать все строки в пользовательском интерфейсе к соответствующему значению на основе этого языкового стандарта. Вероятно, вам нужен отдельный класс, чтобы справиться с этим: вот простой пример.
import java.util.Locale;
import java.util.ResourceBundle;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.StringBinding;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
public class LocalizedBinding {
// property representing the current locale:
private final ObjectProperty<Locale> locale ;
// private property to hold the resource bundle:
private final ObjectProperty<ResourceBundle> bundle ;
public LocalizedBinding(String bundleName, Locale locale) {
this.locale = new SimpleObjectProperty<>(locale);
this.bundle = new SimpleObjectProperty<>();
// update resource bundle whenever locale changes:
bundle.bind(Bindings.createObjectBinding(() -> {
Locale l = this.locale.get();
if (l == null) {
return null ;
} else {
ResourceBundle resources = ResourceBundle.getBundle(bundleName, l);
return resources;
}
},
this.locale));
}
// creates a StringBinding whose value is obtained from the current
// resource bundle using the provided key. The binding will automatically
// update if the locale changes:
public StringBinding createStringBinding(String key) {
return new StringBinding() {
{
bind(bundle);
}
@Override
protected String computeValue() {
ResourceBundle resources = bundle.get();
if (resources == null) {
return key ;
} else {
return resources.getString(key);
}
}
};
}
// Property accessors for locale:
public final ObjectProperty<Locale> localeProperty() {
return this.locale;
}
public final java.util.Locale getLocale() {
return this.localeProperty().get();
}
public final void setLocale(final java.util.Locale locale) {
this.localeProperty().set(locale);
}
}
Вот краткий пример использования этого:
import java.util.Locale;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class SwitchableLanguageTest extends Application {
@Override
public void start(Stage primaryStage) {
// Combo box for language selection:
ComboBox<Locale> combo = new ComboBox<>();
combo.getItems().addAll(Locale.getDefault(), new Locale("nl"));
// display each language in the actual language:
combo.setCellFactory(lv -> createListCell());
combo.setButtonCell(createListCell());
Label greetingLabel = new Label();
// Create a localizedBinding object for the bundle resources/greetings
LocalizedBinding localizedBinding = new LocalizedBinding(
"resources/greetings", Locale.getDefault());
// update the localizedBinding's locale when the combo box value changes:
localizedBinding.localeProperty().bind(combo.valueProperty());
// bind the label's text:
greetingLabel.textProperty().bind(
localizedBinding.createStringBinding("greeting"));
combo.getSelectionModel().select(Locale.getDefault());
BorderPane root = new BorderPane(greetingLabel, combo, null, null, null);
BorderPane.setAlignment(combo, Pos.CENTER);
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
private ListCell<Locale> createListCell() {
return new ListCell<Locale>() {
@Override
public void updateItem(Locale locale, boolean empty) {
super.updateItem(locale, empty);
if (empty) {
setText("");
} else {
setText(locale.getDisplayLanguage(locale));
}
}
};
}
public static void main(String[] args) {
launch(args);
}
}
Два свойства файлов (в каталоге ресурсов) являются
greetings.properties:
greeting=Hello
и greetings_nl .properties:
greeting=Hallo
Смежные вопросы
- 1. Android: изменение языка с английского на хинди и telugu
- 2. Изменение языка на Firefox с Selenium Python
- 3. Как хранить символы английского языка без английского языка с использованием динамического запроса в SQL Server
- 4. iPhone локализация без английского
- 5. Автоматическое изменение языка ввода
- 6. Изменение языка wordpress
- 7. Изменение языка приложения
- 8. Регулярное выражение для извлечения английского языка датирует
- 9. Изменение языка плагина Cordova на iOS
- 10. Solr стандартный список синонимов английского языка
- 11. Получить пользовательский ввод, отличный от английского языка
- 12. Преобразование английского языка в урду или арабский
- 13. Querying Solr в отличие от английского языка
- 14. Преобразование английского языка в Ubbi Dubbi
- 15. Список "Stop words" для английского языка?
- 16. Словарь английского языка для приложения J2ME
- 17. C# WritePrivateProfileString() значение, отличное от английского языка
- 18. Переписывание/перефразирование английского языка в python
- 19. RegEx для английского языка и австралийский Индекс
- 20. , который является лучшей сверкой европейского + английского языка
- 21. ли установка испанского равный английского языка?
- 22. Поддержка не-английского языка через SolrNet
- 23. Существует ли формальная грамматика английского языка?
- 24. Принудительная клавиатура для английского языка на Windows Phone 7.5
- 25. сборщик угловых моментов - поддержка ярлыков на основе языка с форматом представления английского языка
- 26. VS Project Setup - Изменение установки языка
- 27. Изменение языка вручную Упрощают китаец
- 28. Как создать приложение для английского языка с помощью python (django)?
- 29. Голландский флаг с четырьмя цветами
- 30. печатная строка с C++ для языка, отличного от английского
https://code.google.com/p/google-api-translate-java/ –
Вам нужно экрнализировать все свои строки и использовать что-то вроде thr i18n Manager, чтобы получить правильный язык. Но обычно вам нужно перезапустить для изменения локаль – Tobi