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>
配置國際化資原始檔
-
建立資原始檔
在
src/main/resources
目錄下建立名為messages.properties
的檔案,用於存放國際化資源。greeting=Hello, World!
-
新增支援多種語言的資原始檔
為每種支援的語言建立對應的資原始檔,例如,對於中文(簡體),建立
messages_zh_CN.properties
。greeting=你好,世界!
使用國際化註解
-
在Controller中使用
使用
@ResponseEntity
和MessageSource
來返回國際化的響應。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); } }
-
配置MessageSource
在
application.properties
中配置MessageSource
的basename,指向資原始檔的路徑。spring.messages.basename=message
使用國際化的檢視解析器
-
配置檢視解析器
使用
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(); } }
-
在模板中使用國際化
在
Thymeleaf
模板中使用#{...}
表示式來顯示國際化文字。<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Greeting Page</title> </head> <body> <h1 th:text="#{greeting}"></h1> </body> </html>
動態更改語言
-
新增更改語言的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的國際化和本地化支援,開發者可以輕鬆地為應用程式新增多語言支援。透過配置資原始檔、使用國際化註解、配置檢視解析器以及動態更改語言,可以為使用者提供更加個性化的體驗。
本文著作權歸聚娃科技微賺淘客系統開發者團隊,轉載請註明出處!