Java Spring Boot中的子域国际化
我正在尝试创建SpringBoot(多语言)web应用程序 假设用户从此域访问:“en.mywebsite.com/index.html”->将启动English lang 从这个域:“fr.mywebsite.com/index.html”->将启动法语langJava Spring Boot中的子域国际化,java,spring,internationalization,subdomain,spring-boot,Java,Spring,Internationalization,Subdomain,Spring Boot,我正在尝试创建SpringBoot(多语言)web应用程序 假设用户从此域访问:“en.mywebsite.com/index.html”->将启动English lang 从这个域:“fr.mywebsite.com/index.html”->将启动法语lang 我怎样才能做到这一点?我也查阅了博客文章,但没有关于子域的其他信息。下面的内容可以解决这个问题 public class SubDomainLocaleResolver extends AbstractLocaleResolver {
我怎样才能做到这一点?我也查阅了博客文章,但没有关于子域的其他信息。下面的内容可以解决这个问题
public class SubDomainLocaleResolver extends AbstractLocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
String domain = request.getServerName();
String language = domain.substring(0, domain.indexOf('.'));
Locale locale = StringUtils.parseLocaleString(language);
if (locale == null) {
locale = determineDefaultLocale(request);
}
return locale != null ? locale : determineDefaultLocale(request);
}
protected Locale determineDefaultLocale(HttpServletRequest request) {
Locale defaultLocale = getDefaultLocale();
if (defaultLocale == null) {
defaultLocale = request.getLocale();
}
return defaultLocale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
throw new UnsupportedOperationException("Cannot change sub-domain locale - use a different locale resolution strategy");
}
}
您获取服务器名称,解析第一部分,并尝试在none found中解析
区域设置
,您可以获得默认值。为查看完整路径而不是参数、会话或cookie的内容编写一个特定的区域设置解算器
。@M.Deinum您能给我一个更具体的示例吗,代码片段等。有一个接口,可以实现resolveLocale
方法。它将提取完整的URL来确定第一部分,并使用该部分来获取语言环境
。这基本上就是你所需要的…谢谢你它成功了!!!:)