知識庫 / Spring / Spring Boot RSS 訂閱

Spring Boot 中國際化指南

Spring Boot
HongKong
4
02:38 PM · Dec 06 ,2025

1. 概述

在本快速教程中,我們將探討如何將國際化功能添加到 Spring Boot 應用程序中。

2. Maven 依賴

為了開發,我們需要以下依賴項:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>1.5.2.RELEASE</version>
</dependency>

最新版本的 spring-boot-starter-thymeleaf 已在 Maven Central 上可用。

3. LocaleResolver

為了使我們的應用程序能夠確定當前使用的區域設置,我們需要添加一個 LocaleResolver Bean:

@Bean
public LocaleResolver localeResolver() {
    SessionLocaleResolver slr = new SessionLocaleResolver();
    slr.setDefaultLocale(Locale.US);
    return slr;
}

LocaleResolver 接口有實現,它們根據會話、Cookie、Accept-Language 請求頭或固定值確定當前區域設置。

在我們的示例中,我們使用了會話驅動的SessionLocaleResolver 並且設置了默認區域為 US

4. LocaleChangeInterceptor

接下來,我們需要添加一個攔截器 Bean,該 Bean 將在請求中存在且值為 lang 參數時,根據該值切換到新的 locale。

@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
    LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
    lci.setParamName("lang");
    return lci;
}

為了使該 Bean 生效,我們需要將其添加到應用程序的攔截器註冊表中。

為此,我們的 @Configuration 類必須實現 WebMvcConfigurer 接口並覆蓋 addInterceptors() 方法:

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor());
}
greeting=Hello! Welcome to our website!
lang.change=Change the language
lang.eng=English
lang.fr=French

接下來,我們創建一個名為 messages_fr.properties 的文件,用於法語,並使用相同的鍵:

greeting=Bonjour! Bienvenue sur notre site!
lang.change=Changez la langue
lang.eng=Anglais
lang.fr=Francais

6. 控制器和 HTML 頁面

讓我們創建一個控制器映射,返回一個名為 international.html 的簡單 HTML 頁面,以便我們能夠以兩種不同的語言查看它:

@Controller
public class PageController {

    @GetMapping("/international")
    public String getInternationalPage() {
        return "international";
    }
}

由於我們使用 Thymeleaf 來顯示 HTML 頁面,因此本地化特定的值將通過具有以下語法的鍵訪問: #{key}

<h1 th:text="#{greeting}"></h1>

JSP文件的語法略有不同:

<h1><spring:message code="greeting" text="default"/></h1>

如果想要訪問帶有兩個不同地區的頁面,則需要在 URL 中添加 lang 參數,格式如下:/international?lang=fr

如果 URL 中未包含 lang 參數,則應用程序將使用默認區域,在本例中為 US 區域。

讓我們為我們的 HTML 頁面添加一個下拉菜單,該菜單中的選項名稱也已在我們的屬性文件中本地化:

<span th:text="#{lang.change}"></span>:
<select id="locales">
    <option value=""></option>
    <option value="en" th:text="#{lang.eng}"></option>
    <option value="fr" th:text="#{lang.fr}"></option>
</select>

然後,我們可以添加一個 jQuery 腳本,該腳本將調用 international</em/> URL,並根據用户選擇的下拉選項,使用相應的 lang</em/> 參數:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
    $("#locales").change(function () {
        var selectedOption = $('#locales').val();
        if (selectedOption != ''){
            window.location.replace('international?lang=' + selectedOption);
        }
    });
});
</script>

7. 運行應用程序

為了初始化我們的應用程序,我們需要添加一個主類並使用 @SpringBootApplication 標註它:

@SpringBootApplication
public class InternationalizationApp {
    
    public static void main(String[] args) {
        SpringApplication.run(InternationalizationApp.class, args);
    }
}

根據所選區域設置,運行應用程序時,頁面將以英語或法語顯示。

讓我們看看英語版本:

現在,讓我們看看法語版本:

8. 結論

在本教程中,我們展示瞭如何在 Spring Boot 應用程序中使用國際化支持的方法。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.