Spring Cloud打破了i18n消息

时间:2016-01-04 15:02:06

标签: internationalization spring-boot thymeleaf spring-cloud netflix-zuul

我有一个带有国际化消息的春季启动Thymeleaf Web应用程序。 默认翻译位于我的messages.properties文件中。

我的application.yml会将MessageSourceAutoConfiguration指向这些消息:

spring:
 messages:
  basename: locale/messages

当我运行应用程序时,MessageSourceAutoConfiguration.setBasename()中的断点会被参数locale/messages命中,并且一切都运行良好。

现在我想使用Zuul将此应用程序设置为reverse proxy,以将请求从浏览器传递到REST应用程序。

import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableZuulProxy
public class ThymeleafApplication extends SpringBootServletInitializer {
    ...
}

所以我在我的application.yml添加了一些配置:

zuul:
 routes:
  rest-api:
   path: /rest-api/**
   url: https://localhost:443/my-rest-api

我的build.gradle看起来像这样:

dependencies {
    compile 'org.springframework.boot:spring-boot-starter-thymeleaf'
    compile 'org.springframework.cloud:spring-cloud-starter-zuul:1.0.4.RELEASE'
}

反向代理现在可以正常工作,但国际化已被打破。消息显示为“?? page1.message1_en_GB ??”。 MessageSourceAutoConfiguration.setBasename()中的断点不再触发。

如何设置Zuul以便我的i18n仍能正常工作?

1 个答案:

答案 0 :(得分:1)

好的,我已经通过升级到最新版本的Spring Boot 1.3.1.RELEASE来解决这个问题。

@ {nerdherd对a bug的回答指出a similar question