Как перевести текст в исходных файлах .java?

У меня есть такое перечисление

public enum CheckboxFeature {

    Option1(" choose this"),
    Option2(" or this"),
    Option3(" maybe this"),
    Option4(" lastly this");

    @Getter
    private final String text;

    public static CheckboxFeature fromName(String v) {
        for (CheckboxFeature c: CheckboxFeature.values()) {
            if (c.name().equalsIgnoreCase(v)) {
                return c;
            }
        }
        throw new IllegalArgumentException(v);
    }
}

Это показывает четыре варианта в виде флажков в веб-представлении.

<form:checkboxes items = "${features}" path = "enabledFeatures" itemLabel = "text" delimiter = "<br/>"/>

Как я могу перевести эти варианты? Я использую fmt: message для остальных переводов в веб-представлении.

я пытался

Option1(" <fmt:message key=\"text.test\"/>"),

а также

Option1(" ${option1}"),

с участием

<fmt:message key = "text.select" var = "option1"/>

в .jsp. Ни один из них не работает, так что, похоже, так работать не может. Как правильно переводить строки? В идеале использовать ресурсы fmt: message и i18n (файлы lang.properties), которые существуют и работают над остальной частью сервлета?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
7
0
481
2

Ответы 2

1, CheckboxFeature добавить метод, например:

 public static List<String> getAllCheckboxFeature(String v) {
        return Arrays.asList(Option1.getText(),...Option4.getText());
 }


2, чем использовать jstl, например:

<c:forEach items = "${options}" var = "option">
    <input type = "checkbox"  = "${option}">
</c:forEach>

Оптимально, вы получаете ключ ресурса из перечисления и ищите его.

public enum CheckboxFeature {
    Option1("label.option1.key"),
    Option2("label.option2.key"),
    Option1("label.option3.key"),
    Option2("label.option4.key");

    private final String key;
    [...]

Я не знаю, как вложить поиск l10n в атрибут itemLabel, поэтому я бы написал что-то вроде:

<c:forEach items = "Options.values()" var = "current">
    <form:checkbox path = "selectedOptions" value = "${current.name()}"/> <fmt:message key = "${current.getKey()}"/>
</c:forEach>

Другие вопросы по теме