java - 当缺少消息键时,如何使 Spring Boot 默认为语言环境?
问题描述
当 Spring Boot 在用户给定的语言环境中找不到消息键时,如何强制它使用默认语言环境?我找到了这个指南: https ://www.baeldung.com/spring-boot-internationalization
我有以下内容:
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver lr = new AcceptHeaderLocaleResolver();
lr.setDefaultLocale(Locale.ENGLISH);
return lr;
}
我有messages_es.properties
,messages_en.properties
(还有更多)。
我有钥匙oops-theme
,messages_en.properties
但其他所有钥匙都没有messages*.properties
。
我将浏览器设置为Accept-Language: es-ES,es;q=0.9,en-US;q=0.8,en;q=0.7
.
然而,当我使用 访问 JSP 页面时oops-theme
,它给出了异常
javax.servlet.jsp.JspTagException:在语言环境“es_ES”的代码“oops-theme”下找不到消息。
JSP 包含
<spring:message code="oops-theme"/>
当 Spring Boot 在给定的语言环境中找不到消息时,如何使用默认语言环境来查找消息?
春季启动 1.5.21。
解决方案
填写messages.properties
备用文本的消息,例如英语。
然后不要写messages_en.properties
,因为默认消息已经是英文的。
请注意,这完全独立于setDefaultLocale(Locale.ENGLISH)
,因为它只是说明在缺少 Accept-Language 标头时要使用的 Locale 。
示例:您可以用messages.properties
德语书写,如果您愿意,可以使用messages_en.properties
英语和messages_es.properties
西班牙语。然后您可以拥有setDefaultLocale(Locale.SPANISH)
,这意味着如果浏览器未指定区域设置,您将获得西班牙语,但对于未在 中提供西班牙语文本的每条消息messages_es.properties
,您将从 获得默认的德语文本messages.properties
。
您应该阅读 javadocResourceBundle
和PropertyResourceBundle
子类以了解这一切是如何工作的。
推荐阅读
- c# - 如何以编程方式在 WPF 中设置图像源
- vue.js - Bootstrap-Vue 表单文件输入在删除时不检查文件格式
- r - 基于给定公式的固定效应模型,使用 R 中的 lme4
- angular - 检查后表达式已更改 - 事件订阅更新
- sql - oracle数据库连接问题
- javascript - react js-× TypeError:无法读取未定义的属性'map'
- tree - 在同一个 MCTS 上玩 AI?
- windows - 在 Heroku 上托管基于 Windows 的 docker 映像
- amazon-web-services - 适用于经过身份验证的用户的 Amazon Web Service (AWS) 私有存储
- php - PHP-FPM 在 docker-compose 中不起作用(未找到 404)