【问题标题】:How do I translate text in .java source files?如何翻译 .java 源文件中的文本?
【发布时间】:2019-01-12 12:02:57
【问题描述】:

我有一个这样的枚举

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);
    }
}

这会将四个选项显示为 web 视图中的复选框

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

如何翻译这些选项?我将 fmt:message 用于 web 视图中的其余翻译。

我试过了

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

Option1(" ${option1}"),

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

在 .jsp 中。 它们都不起作用,所以它似乎不能以这种方式工作。翻译字符串的正确方法是什么?理想情况下使用现有的 fmt:message 和 i18n 资源(lang.properties 文件)并处理 servlet 的其余部分?

【问题讨论】:

    标签: java servlets internationalization translation


    【解决方案1】:

    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>
    

    【讨论】:

      【解决方案2】:

      最好从枚举中获取资源键,然后进行查找。

      public enum CheckboxFeature {
          Option1("label.option1.key"),
          Option2("label.option2.key"),
          Option1("label.option3.key"),
          Option2("label.option4.key");
      
          private final String key;
          [...]
      

      我不知道如何在 itemLabel 属性中嵌套 l10n 查找,所以我会写如下内容:

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

      【讨论】:

        猜你喜欢
        • 2018-12-23
        • 2014-04-15
        • 1970-01-01
        • 2011-12-06
        • 1970-01-01
        • 1970-01-01
        • 2016-10-28
        • 1970-01-01
        • 2011-04-27
        相关资源
        最近更新 更多