真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot怎么實(shí)現(xiàn)國(guó)際化

這篇文章主要介紹了SpringBoot怎么實(shí)現(xiàn)國(guó)際化的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇SpringBoot怎么實(shí)現(xiàn)國(guó)際化文章都會(huì)有所收獲,下面我們一起來看看吧。

創(chuàng)新互聯(lián)建站長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為普洱企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),普洱網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

一、前言

國(guó)際化這個(gè)功能可能我們不常用,但是在有需要的地方還是必須要上的,今天就來看一下怎么在我們的web開發(fā)中配置國(guó)際化,讓我們的網(wǎng)站可以根據(jù)語言來展示不同的形式。

二、國(guó)際化配置

2.1 springboot中的自動(dòng)配置

springboot已經(jīng)自動(dòng)配置好了管理國(guó)際化資源文件的組件:

@ConfigurationProperties(prefix = "spring.messages")
public class MessageSourceAutoConfiguration {
    
    /**
     * Comma-separated list of basenames (essentially a fully-qualified classpath
     * location), each following the ResourceBundle convention with relaxed support for
     * slash based locations. If it doesn't contain a package qualifier (such as
     * "org.mypackage"), it will be resolved from the classpath root.
     */
    private String basename = "messages";  
    //我們的配置文件可以直接放在類路徑下叫messages.properties;
    
    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        if (StringUtils.hasText(this.basename)) {
            //設(shè)置國(guó)際化資源文件的基礎(chǔ)名(去掉語言國(guó)家代碼的)
            messageSource.setBasenames(StringUtils.commaDelimitedListToStringArray(
                    StringUtils.trimAllWhitespace(this.basename)));
        }
        if (this.encoding != null) {
            messageSource.setDefaultEncoding(this.encoding.name());
        }
        messageSource.setFallbackToSystemLocale(this.fallbackToSystemLocale);
        messageSource.setCacheSeconds(this.cacheSeconds);
        messageSource.setAlwaysUseMessageFormat(this.alwaysUseMessageFormat);
        return messageSource;
    }

從上邊的源碼我們可以看出,我們的國(guó)際化資源文件可以直接起名字為messages.properties,springboot就會(huì)自動(dòng)識(shí)別,其實(shí)相當(dāng)于在配置文件中添加了一個(gè)spring.messages.basename=messages,如果我們指定一個(gè)xxx.properties作為國(guó)際化文件,那么我們就指定

spring.messages.basename=xxx就可以了,springboot會(huì)自動(dòng)的找到以xxx開頭的properties,根據(jù)語言和國(guó)家代碼,找到相應(yīng)的xxx_zh_CN.properties(中文_中國(guó))、xxx_en_US.properties(英文_美國(guó))來選擇其中的資源值作為當(dāng)前頁(yè)面中所要渲染的值。

2.2 添加資源文件

我們新建一個(gè)名稱為i18n的文件夾,在里邊添加3個(gè)配置文件,分別是login.properties(默認(rèn)無語言選擇時(shí)的配置),login_zh_CN.properties(中文語言配置),login_en_US.properties(英文語言配置),默認(rèn)的格式為:文件名_區(qū)域_語言.properties;當(dāng)我們這樣命名生成文件后,IDEA也會(huì)幫我們識(shí)別這是個(gè)國(guó)際化配置包,自動(dòng)轉(zhuǎn)換成如下的模式,上邊附帶一個(gè)Resource Bundle 'login'的文件夾,右鍵在這個(gè)文件夾上點(diǎn)擊,就可以方便的添加其他語言的配置:

SpringBoot怎么實(shí)現(xiàn)國(guó)際化

SpringBoot怎么實(shí)現(xiàn)國(guó)際化

SpringBoot怎么實(shí)現(xiàn)國(guó)際化

分別在三個(gè)配置文件中寫入配置:

login.properties:

login.btn=登陸~
login.password=密碼~
login.remember=記住我~
login.tip=請(qǐng)登陸~
login.username=用戶名~

login_zh_CN.properties:

login.tip=請(qǐng)登錄
login.username=用戶名
login.password=密碼
login.btn=登錄
login.remember= 記住我

login_en_US.properties:

login.tip=Please sign in
login.username=Username
login.password=Password
login.btn=Sign in
login.remember = Remember Me

然后我們的主配置文件application.properties中添加如下配置,啟用我們自定義的資源文件:

spring.messages.basename=i18n.login

 2.3 添加登錄頁(yè)面

這里我們以之前的thymeleaf語法來添加一個(gè)登錄頁(yè)面來進(jìn)行測(cè)試:



    
        
        
        
        
        Signin Template for Bootstrap
        
        
        
        
    
    
        
            
            Please sign in
            
            

            Username                          Password                                                        
            Sign in             © 2017-2018

            中文             English              

#{login.username} 會(huì)直接從國(guó)際化的資源文件中取到我們所配置的值,根據(jù)不同的語言會(huì)切換為不同的語言配置,默認(rèn)是根據(jù)瀏覽器的語言來判斷的,我們可以按照以下方式來設(shè)置瀏覽器的語言來查看效果,在谷歌瀏覽器的設(shè)置里邊搜索語言,然后添加一個(gè)英文語言,設(shè)置語言的順序來設(shè)置首選語言,如下所示:

SpringBoot怎么實(shí)現(xiàn)國(guó)際化

我們也可以查看瀏覽器發(fā)送的請(qǐng)求頭部分來確定語言是否 設(shè)置成功:

SpringBoot怎么實(shí)現(xiàn)國(guó)際化

2.4 自定義語言文化解析器

從上邊我們可以看出,默認(rèn)的是從請(qǐng)求頭中解析語言文化的,我們可以設(shè)置自己的解析器,比如訪問頁(yè)面的查詢參數(shù)中來解析語言,下邊是我們的登錄頁(yè)面,我們可以添加兩個(gè)按鈕,當(dāng)點(diǎn)擊按鈕的時(shí)候,重新跳轉(zhuǎn)index.html頁(yè)面,并附帶上一個(gè)lang的參數(shù):

SpringBoot怎么實(shí)現(xiàn)國(guó)際化

可以查看網(wǎng)頁(yè)源代碼,我們生成的鏈接:

SpringBoot怎么實(shí)現(xiàn)國(guó)際化

html關(guān)鍵代碼,用thymeleaf生成,也可以自己手寫:

Sign in
© 2017-2018

中文 English

添加我們自己的解析器MyLocaleResolver,從請(qǐng)求參數(shù)中獲取lang,根據(jù)lang的值來設(shè)置不同的Locale:

SpringBoot怎么實(shí)現(xiàn)國(guó)際化

package com.example.demo.component;

import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;

public class MyLocaleResolver implements LocaleResolver {
    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
        String lang = httpServletRequest.getParameter("lang");
        Locale locale = Locale.getDefault();
        if(!StringUtils.isEmpty(lang)){
            String[] parts = lang.split("_");
            locale = new Locale(parts[0],parts[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {

    }
}

在WebConfig添加如下代碼,把這個(gè)MyLocaleResolver添加到容器中去,springboot發(fā)現(xiàn)到有LocaleResolver的新實(shí)例,就會(huì)用這個(gè)解析器:

SpringBoot怎么實(shí)現(xiàn)國(guó)際化

重新編譯啟動(dòng)就可以了,點(diǎn)擊不同語言跳轉(zhuǎn)不同鏈接,顯示不同的語言:

SpringBoot怎么實(shí)現(xiàn)國(guó)際化

關(guān)于“SpringBoot怎么實(shí)現(xiàn)國(guó)際化”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“SpringBoot怎么實(shí)現(xiàn)國(guó)際化”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章題目:SpringBoot怎么實(shí)現(xiàn)國(guó)際化
文章網(wǎng)址:http://weahome.cn/article/pdeogc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部