簡體   English   中英

Spring Boot中子域的國際化

[英]Internationalization by subdomain in Spring Boot

我正在嘗試創建spring boot(多郎)web應用程序。

假設用戶從該域訪問:“en.mywebsite.com/index.html” - >將啟動英語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");

    }
}

您獲取服務器名稱,解析第一部分並嘗試解析未找到的Locale ,您可以獲得默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM