目前我正在建立一个多语言页面,页面上的一些数据是从数据库中检索的。我使用i18n来翻译静态内容,但我不知道如何翻译提到的数据。
前端
<div th:each="map : ${listTypeMap}">
<div th:each="mapEntry : ${map}" th:if="${mapEntry.value} == 'foo'">
<div class="col-md-12 form-check">
<input type="checkbox" class="form-check-input" th:value="${mapEntry.key}" required>
<label class="form-check-label" for="validationFormCheck1" th:text="${mapEntry.key}"></label>
//I want to translate this label
</div>
</div>
</div>
我有一个天真的想法,这是获得当前的网页区域设置和翻译它在Spring,但我认为有更好的方法。
SearchFooServiceImpl.java
@Service
@Slf4j
public class SearchFooServiceImpl implements SearchFooService{
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public HashMap<String,String> searchFoo() {
HashMap<String,String> results = new HashMap<>();
jdbcTemplate.query("SELECT FOO_NAME_ENG, FOO_CLASS_DESC_ENG FROM FOO_TYPE ", (ResultSet rs) -> {
Locale locale = LocaleContextHolder.getLocale();
//if locale.getLanguage() is zh, translate English to Chinese
while (rs.next()) {
results.put(rs.getString("FOO_NAME_ENG"), rs.getString("FOO_CLASS_DESC_ENG"));
}
return results;
});
return results;
}
}
1条答案
按热度按时间4urapxun1#
我找到了使用thymeleaf预处理器的解决方案。例如,我从数据库中得到的数据像“Hello World”,然后我用下面的代码将其转换为“hello.world
然后我就可以把它翻译成i18n中的普通文本。
消息_中文属性
消息_中文_香港.属性