Spring Boot應用的國際化與本地化支援

省赚客开发者团队發表於2024-08-16

Spring Boot應用的國際化與本地化支援

大家好,我是微賺淘客返利系統3.0的小編,是個冬天不穿秋褲,天冷也要風度的程式猿!

隨著全球化的發展,應用程式需要支援多種語言以滿足不同地區使用者的需求。Spring Boot提供了一套簡單而強大的國際化(i18n)和本地化(l10n)支援。本文將介紹如何在Spring Boot應用中實現國際化和本地化。

國際化和本地化簡介

國際化(i18n)是指設計和開發一個可以被翻譯成多種語言的應用程式的過程。本地化(l10n)是指將應用程式適應特定地區的過程,包括語言、貨幣、日期和時間格式等。

環境準備

確保你的開發環境已經安裝了Java 8或更高版本,以及Maven或Gradle作為構建工具。

新增依賴

在Spring Boot專案的pom.xml檔案中新增Spring Boot的國際化支援依賴。

<dependencies>
    <!-- Spring Boot Starter Web for Localization -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

配置國際化資原始檔

  1. 建立資原始檔

    src/main/resources目錄下建立名為messages.properties的檔案,用於存放國際化資源。

    greeting=Hello, World!
    
  2. 新增支援多種語言的資原始檔

    為每種支援的語言建立對應的資原始檔,例如,對於中文(簡體),建立messages_zh_CN.properties

    greeting=你好,世界!
    

使用國際化註解

  1. 在Controller中使用

    使用@ResponseEntityMessageSource來返回國際化的響應。

    package cn.juwatech.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.MessageSource;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.Locale;
    
    @RestController
    public class GreetingController {
    
        @Autowired
        private MessageSource messageSource;
    
        @GetMapping("/greeting")
        public ResponseEntity<String> getGreeting(Locale locale) {
            String greeting = messageSource.getMessage("greeting", null, locale);
            return ResponseEntity.ok(greeting);
        }
    }
    
  2. 配置MessageSource

    application.properties中配置MessageSource的basename,指向資原始檔的路徑。

    spring.messages.basename=message
    

使用國際化的檢視解析器

  1. 配置檢視解析器

    使用Thymeleaf作為檢視模板引擎,並配置其國際化支援。

    package cn.juwatech.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.LocaleResolver;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
    import org.springframework.web.servlet.i18n.SessionLocaleResolver;
    
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
    
        @Bean
        public LocaleResolver localeResolver() {
            SessionLocaleResolver slr = new SessionLocaleResolver();
            slr.setDefaultLocale(Locale.ENGLISH);
            return slr;
        }
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(localeChangeInterceptor());
        }
    
        @Bean
        public LocaleChangeInterceptor localeChangeInterceptor() {
            return new LocaleChangeInterceptor();
        }
    }
    
  2. 在模板中使用國際化

    Thymeleaf模板中使用#{...}表示式來顯示國際化文字。

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>Greeting Page</title>
    </head>
    <body>
        <h1 th:text="#{greeting}"></h1>
    </body>
    </html>
    

動態更改語言

  1. 新增更改語言的Controller

    建立一個新的Controller來處理語言更改請求。

    package cn.juwatech.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    import javax.servlet.http.HttpServletRequest;
    
    @Controller
    public class LanguageController {
    
        @GetMapping("/changeLanguage")
        public String changeLanguage(@RequestParam String language, HttpServletRequest request) {
            request.getSession().setAttribute("org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE", new Locale(language));
            return "redirect:/greeting";
        }
    }
    

結論

透過Spring Boot的國際化和本地化支援,開發者可以輕鬆地為應用程式新增多語言支援。透過配置資原始檔、使用國際化註解、配置檢視解析器以及動態更改語言,可以為使用者提供更加個性化的體驗。

本文著作權歸聚娃科技微賺淘客系統開發者團隊,轉載請註明出處!

相關文章