Прежде всего, рекомендация - всегда обращайтесь к носителю языка для выполнения ваших переводов. Это помогает избежать определенных типов ошибок. Например, слово, которое вы выбрали в качестве замены слова «open», обычно используется как прилагательное (например, «открытое окно»), а не как глагол, в то время как вы используете неопределенное время для слова «отмена». У вас также нет знаков ударения, что может запутать некоторых читателей (некоторые слова отличаются только из-за их знаков ударения ...).
Далее, вы не должны жестко кодировать выбор или использование языка; они должны быть загружены из файлов .properties
или аналогичных. Это делает техническое обслуживание тривиальным, особенно при добавлении дополнительных языков. @ Ответ Морта об использовании шаблона наблюдателя правильный - именно так должны обрабатываться обновления. Вот (очень грубо), как бороться с языковыми аспектами:
Для начала вам понадобятся .properties
файлы.
spanishButtonNames.properties
==================================
openButton=Abrir
cancelButton=Cancelar
englishButtonNames.properties
==================================
opernButton=Open
cancelButton=Cancel
Вы захотите обернуть их в какой-нибудь PropertyManager
, который будет иметь дело с загрузкой файлов ресурсов за кулисами, когда запрашивается язык (и, возможно, освобождает ресурсы).
Далее, при создании кнопок назовите их:
JButton openButton = new JButton();
openButton.setName("openButton");
// And add them to a list
buttonList.add(openButton);
// More buttons....
Обновление кнопок из списка кнопок является тривиальным. Вы можете просто прослушивать (и распространять) buttonList
сообщения:
for(JButton button : buttonList) {
button.setText(languagePropertyManager.getProperty(button.getName()));
}
(Обратите внимание, что при некотором умном кодировании можно загрузить даже макет графического интерфейса пользователя из текстового файла, но я никогда не пробовал этого. Однако я считаю, что для этого есть фреймворки.)