为什么我需要 Spring 启动 `messages.properties` 而不仅仅是 `messages_en.properties`?
Why do I need Spring Boot `messages.properties` instead of just `messages_en.properties`?
我正在关注 this guide,它说要将默认消息文件命名为 messages.properties
。为什么我不能将其命名为 messages_en.properties
并将默认语言环境设置为英语?
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.ENGLISH);
return slr;
}
这不起作用(每次重命名 message.properties
时都必须硬停止并重新启动服务器 - 动态重新加载无法获取更改)。它会打印出带有 <spring:message code="oops" text="default"/>
标签的 default
文本,因为它找不到 messages_en.properties
.
事实上,当我将浏览器的默认语言设置为法语并messages_fr.properties
,并重新启动服务器时,它也找不到法语的密钥。
不使用 Thymeleaf。无需允许用户选择语言。
参考:https://docs.spring.io/spring-boot/docs/1.5.17.RELEASE/reference/htmlsingle/(世界只有一个实例'internationalization',且仅与应用程序属性有关)。
我改用 AcceptHeaderLocaleResolver
修复了它。
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver ahlr = new AcceptHeaderLocaleResolver();
ahlr.setDefaultLocale(Locale.ENGLISH);
return ahlr;
}
我以为指南说它将在 session、cookie 或 header 中搜索语言环境,但他们只是说不同的 sub-classes 分别实现了这些功能。
The LocaleResolver interface has implementations that determine the current locale based on the session, cookies, the Accept-Language header, or a fixed value.
我通过设置 application property 解决了实时重新加载问题,至少对于调试:
spring.messages.cache-seconds=1
我还设置了这个 属性 以免弄乱我的 src/main/resources
文件夹,所以我可以将所有消息文件移动到 locales/
sub-directory。
spring.messages.basename=locales/messages
我正在关注 this guide,它说要将默认消息文件命名为 messages.properties
。为什么我不能将其命名为 messages_en.properties
并将默认语言环境设置为英语?
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.ENGLISH);
return slr;
}
这不起作用(每次重命名 message.properties
时都必须硬停止并重新启动服务器 - 动态重新加载无法获取更改)。它会打印出带有 <spring:message code="oops" text="default"/>
标签的 default
文本,因为它找不到 messages_en.properties
.
事实上,当我将浏览器的默认语言设置为法语并messages_fr.properties
,并重新启动服务器时,它也找不到法语的密钥。
不使用 Thymeleaf。无需允许用户选择语言。
参考:https://docs.spring.io/spring-boot/docs/1.5.17.RELEASE/reference/htmlsingle/(世界只有一个实例'internationalization',且仅与应用程序属性有关)。
我改用 AcceptHeaderLocaleResolver
修复了它。
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver ahlr = new AcceptHeaderLocaleResolver();
ahlr.setDefaultLocale(Locale.ENGLISH);
return ahlr;
}
我以为指南说它将在 session、cookie 或 header 中搜索语言环境,但他们只是说不同的 sub-classes 分别实现了这些功能。
The LocaleResolver interface has implementations that determine the current locale based on the session, cookies, the Accept-Language header, or a fixed value.
我通过设置 application property 解决了实时重新加载问题,至少对于调试:
spring.messages.cache-seconds=1
我还设置了这个 属性 以免弄乱我的 src/main/resources
文件夹,所以我可以将所有消息文件移动到 locales/
sub-directory。
spring.messages.basename=locales/messages