java - 如何翻译 .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);
}
}
这将四个选项显示为 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 的其余部分?
解决方案
最理想的情况是,您从枚举中获取资源密钥,然后进行查找。
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>
推荐阅读
- python - 有没有更简单的方法从 groupby 获取对象并放入字典?
- docker - Docker构建文件映像问题
- python - python matplotlib:onclick不起作用,请告诉我为什么以及如何暂停和恢复动画,
- r - 填写常数值,当dplyr中满足条件时加1
- python - 我正在做作业,当输入负数时,此代码需要打印错误消息
- ios - ARKit ARParticipantAnchor 的变换是 AR 协作中的 NaN
- java - 刚刚安装了 Eclipse Helios (eclipse-jee-helios-SR1-win32-x86_64),但我不断收到错误
- node.js - 如何将带有返回的 if else 函数转换为迭代?
- vue.js - 如何在vscode的lerna项目中使用vite项目调试vue3?
- r - 测试集和训练集过于相似的问题