Есть несколько проблем, возможно, из-за процесса сборки.
Во-первых, чтобы поиск сообщений работал, мне нужно было переместить ресурсы en
и de
в Messages_en.properties
и Messages_de.properties
, чтобы создать реальный пакет ресурсов.
Во-вторых, пример кода пытается использовать сообщения без доступных переводов, например, «файл открыт». Вот обновленная версия того, что я попробовал; все это работает с вышеуказанной модификацией:
public static void main(String[] args) {
I18n i18n = I18nFactory.getI18n(I18nExample.class, "Messages");
for (int i = 0; i < 2; i++) {
if (i == 0) {
print("First run");
} else {
print("Second run");
i18n.setLocale(Locale.GERMAN);
}
print("Current locale: " + i18n.getLocale());
print(i18n.tr("This text is marked for translation and is translated"));
String mark = i18n.marktr("This text is marked for translation but not translated");
print(mark);
print(i18n.tr(mark));
mark = i18n.tr("This is the {0}. text to be translated", "chat (noun)");
print(mark);
mark = i18n.tr("This is the {0}. text to be translated", "chat (verb)");
print(mark);
print(i18n.tr("chat (noun)"));
print(i18n.tr("chat (verb)"));
print("");
}
}
Обратите внимание, что для вставки переведенных слов вам нужно что-то вроде этого:
print(i18n.tr("This is the {0}. text to be translated", i18n.tr("chat (noun)")));
print(i18n.tr("This is the {0}. text to be translated", i18n.tr("chat (verb)")));
Однако, без снятия ударов (удаляя !
и предоставляя перевод на английский язык в Messages_en.properties
, он отображается как chat (noun)
, что ... кажется мне почти бесполезным.
Документация по этому аспекту отсутствует.