У меня есть поле поиска, но я хочу настроить текстовую подсказку, которую оно представляет, например, «Поиск». Я хочу изменить его на свой язык, который будет «Буска», как это сделать в приведенном ниже коде:
Container list = new Container();
hi.getToolbar().addSearchCommand(e -> {
String text = (String)e.getSource();
if (text == null || text.length() == 0) {
// clear search
for(Component cmp : list) {
cmp.setHidden(false);
cmp.setVisible(true);
}
hi.getContentPane().animateLayout(150);
} else {
text = text.toLowerCase();
for(Component cmp : list) {
Button mb = (Button)cmp;
String line1 = mb.getText();
boolean show = line1 != null && line1.toLowerCase().indexOf(text) > -1;
mb.setHidden(!show);
mb.setVisible(show);
}
hi.getContentPane().animateLayout(150);
}
}, 4);
Кстати, как мне настроить отображение календаря Codename One на моем родном языке?
ИЗМЕНИТЬ:
Я смотрел туториал, но у меня проблемы, кажется, я неправильно его настраиваю, посмотрите:
и вот что я хочу изменить:
Стоит ли ставить что-то подобное?
hi.putClientProperty("Search", hi.getToolbar());
Мой код ниже:
String lang = L10NManager.getInstance().getLanguage();
if (lang != null) {
lang = lang.toLowerCase();
switch(lang) {
case "en":
UIManager.getInstance().setBundle(theme.getL10N("portuguese", "pt"));
break;
}
}
У меня исключение:
java.lang.NullPointerException
at com.consultaprodutos.AplicacaoPrincipal.init(AplicacaoPrincipal.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.codename1.impl.javase.Executor$1$1.run(Executor.java:118)
at com.codename1.ui.Display.processSerialCalls(Display.java:1129)
at com.codename1.ui.Display.mainEDTLoop(Display.java:924)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
OBS: мне не удалось найти параметры виртуальной машины в моих свойствах проекта, чтобы установить -Defuser.language = pt
Проверьте это руководство по локализации. Суть в том, что вы создаете пакет ресурсов и устанавливаете его, после чего все автоматически обновляется до нового локализованного текста.
Ключи соответствуют тексту, поэтому, если текст - «Поиск», просто добавьте «Поиск» к набору ресурсов и значению перевода.
Что в строке 76? Какой ide вы используете?
Eclipse, в строке 76 стоит UIManager.getInstance().setBundle(theme.getL10N("portuguese", "pt"));
Похоже, что theme
нулевой. Как его инициализировать?
Инициализирую UIManager.initNamedTheme("/theme", "Business");
Спасибо, Шай, я установил theme = UIManager.initNamedTheme("/theme", "Business");
, он работает должным образом, у меня переведены Календарь и Поиск.
Отредактировал мой вопрос, я что-то упускаю, я думаю.