Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot中的子域国际化_Java_Spring_Internationalization_Subdomain_Spring Boot - Fatal编程技术网

Java Spring Boot中的子域国际化

Java 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 {

我正在尝试创建SpringBoot(多语言)web应用程序

假设用户从此域访问:“en.mywebsite.com/index.html”->将启动English lang

从这个域:“fr.mywebsite.com/index.html”->将启动法语lang


我怎样才能做到这一点?我也查阅了博客文章,但没有关于子域的其他信息。

下面的内容可以解决这个问题

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来确定第一部分,并使用该部分来获取
语言环境
。这基本上就是你所需要的…谢谢你它成功了!!!:)