Spring 引导中的子域国际化
Internationalization by subdomain in Spring Boot
我正在尝试创建 spring 引导(多语言)网络应用程序。
假设来自该域的用户访问:"en.mywebsite.com/index.html" -> 将启动英文语言。
从此域:"fr.mywebsite.com/index.html" -> 将启动法语语言。
我怎样才能做到这一点?我还查阅了 this 博客 post,但没有关于子域的其他信息。
像下面这样的东西就可以了。
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 中的一个 Locale
发现你可以得到默认值。
我正在尝试创建 spring 引导(多语言)网络应用程序。
假设来自该域的用户访问:"en.mywebsite.com/index.html" -> 将启动英文语言。
从此域:"fr.mywebsite.com/index.html" -> 将启动法语语言。
我怎样才能做到这一点?我还查阅了 this 博客 post,但没有关于子域的其他信息。
像下面这样的东西就可以了。
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 中的一个 Locale
发现你可以得到默认值。