最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot實現(xiàn)國際化i18n詳解

 更新時間:2024年12月15日 08:14:04   作者:HBLOG  
國際化(Internationalization,簡稱i18n)是指在軟件應(yīng)用中支持多種語言和文化的能力,本文將介紹如何在Spring?Boot應(yīng)用中實現(xiàn)國際化,需要的可以參考下

1.什么是國際化(i18n)

國際化(Internationalization,簡稱i18n)是指在軟件應(yīng)用中支持多種語言和文化的能力。通過國際化,應(yīng)用可以根據(jù)用戶的語言和地區(qū)設(shè)置,動態(tài)地顯示不同的文本內(nèi)容。本文將介紹如何在Spring Boot應(yīng)用中實現(xiàn)國際化,并提供完整的代碼示例。

2.代碼工程

在Spring Boot中實現(xiàn)國際化(i18n)可以通過以下步驟完成。我們將使用Spring的消息源(MessageSource)功能來支持多語言文本。

步驟 1: 創(chuàng)建項目

首先,創(chuàng)建一個新的Spring Boot項目??梢允褂肧pring Initializr(start.spring.io/)來生成項目,選擇以下…

Spring Web

Spring Boot DevTools(可選,用于熱重載)

springboot-demo com.et 1.0-SNAPSHOT 4.0.0

<artifactId>i18n</artifactId>

<properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

步驟 2: 創(chuàng)建國際化資源文件

src/main/resources目錄下,創(chuàng)建一個名為messages的文件夾,并在其中創(chuàng)建不同語言的資源文件。例如:

  • messages.properties(默認語言,通常是英語)
  • messages_zh.properties(中文)
  • messages_fr.properties(法語)

每個文件的內(nèi)容如下:

messages.properties(默認語言)

greeting=Hello!
farewell=Goodbye!

messages_zh.properties(中文)

greeting=你好!
farewell=再見!

messages_fr.properties(法語)

greeting=Bonjour!
farewell=Au revoir!

步驟 3: 配置MessageSource

在Spring Boot中,默認會自動配置MessageSource,但你可以自定義配置。創(chuàng)建一個配置類,例如MessageConfig

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;

@Configuration
public class MessageConfig {

    @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:messages/messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }
}

步驟 4: 創(chuàng)建Controller

創(chuàng)建一個控制器來處理請求并返回國際化的消息:

package com.et.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.LocaleResolver;

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

@RestController
public class GreetingController {

    @Autowired
    private MessageSource messageSource;

    @Autowired
    private LocaleResolver localeResolver;

    @GetMapping("/greeting")
    public String greeting(HttpServletRequest request, @RequestHeader(value = "Accept-Language", required = false) String acceptLanguage) {
        Locale locale = localeResolver.resolveLocale(request);
        
        // set language by Accept-Language
        if (acceptLanguage != null && !acceptLanguage.isEmpty()) {
            String[] languages = acceptLanguage.split(",");
            String language = languages[0].split(";")[0]; // get the first language
            language = language.trim();
            locale = Locale.forLanguageTag(language);
        }

        return messageSource.getMessage("greeting", null, locale);
    }
}

步驟 5: 前端實現(xiàn)

如果你有前端頁面,可以通過AJAX請求獲取國際化文本。例如,使用JavaScript:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Internationalization Example</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f0f0;
            color: #333;
            padding: 20px;
        }
        select {
            margin-bottom: 20px;
        }
    </style>
</head>
<body>
<h1 id="greeting"></h1>

<label for="language-select">Choose a language:</label>
<select id="language-select">
    <option value="en">English</option>
    <option value="zh">中文</option>
    <option value="fr">Fran?ais</option>
</select>

<script>
        function fetchGreeting(lang) {
            fetch('/greeting', {
                method: 'GET',
                headers: {
                    'Accept-Language': lang
                }
            })
            .then(response => response.text())
            .then(data => {
                document.getElementById('greeting').innerText = data;
            });


        }

        // Fetch greeting based on selected language
        document.getElementById('language-select').addEventListener('change', function() {
            const selectedLang = this.value;
            fetchGreeting(selectedLang);
        });

        // Initial fetch in English
        fetchGreeting('en');
    </script>
</body>
</html>

以上只是一些關(guān)鍵代碼,所有代碼請參見下面代碼倉庫

代碼倉庫

github.com/Harries/springboot-demo(i18n)

3.測試

啟動Spring Boot應(yīng)用,訪問http://127.0.0.1:8088/index.html。效果如下圖

4.總結(jié)

通過以上步驟,你可以在Spring Boot應(yīng)用中實現(xiàn)國際化。你可以根據(jù)用戶的語言偏好動態(tài)地返回不同的文本內(nèi)容。根據(jù)需要,你可以擴展更多語言和消息,并在前端實現(xiàn)語言切換功能。

到此這篇關(guān)于SpringBoot實現(xiàn)國際化i18n詳解的文章就介紹到這了,更多相關(guān)SpringBoot國際化i18n內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 從拋出異常到返回JSON/XML:SpringBoot?異常處理全鏈路深度解析

    從拋出異常到返回JSON/XML:SpringBoot?異常處理全鏈路深度解析

    Spring?Boot?(基于?Spring?MVC)?提供了一套優(yōu)雅的、解耦的異常處理機制,本文將帶你深入底層,探究當一個異常被拋出后,究竟經(jīng)歷了怎樣的奇幻漂流,又是如何根據(jù)前端需求自動變成?JSON?或?XML?的,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • Java?HttpURLConnection使用方法與實例演示分析

    Java?HttpURLConnection使用方法與實例演示分析

    這篇文章主要介紹了Java?HttpURLConnection使用方法與實例演示,HttpURLConnection一個抽象類是標準的JAVA接口,該類位于java.net包中,它提供了基本的URL請求,響應(yīng)等功能,下面我們來深入看看
    2023-10-10
  • Java之IO流面試題案例講解

    Java之IO流面試題案例講解

    這篇文章主要介紹了Java之IO流案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • java使用java.io.File類和java.nio.file.Path類對文件重命名

    java使用java.io.File類和java.nio.file.Path類對文件重命名

    這篇文章主要給大家介紹了關(guān)于java使用java.io.File類和java.nio.file.Path類對文件重命名的相關(guān)資料,本文僅為日常操作記錄,方便后期使用查找本地電腦文件太多了,又不想一個一個重命名,改名字什么的很麻煩,需要的朋友可以參考下
    2024-02-02
  • Java中的javaBean、vo、entity、domain和pojo

    Java中的javaBean、vo、entity、domain和pojo

    這篇文章主要介紹了Java中的javaBean、vo、entity、domain和pojo用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 詳解SpringMVC實現(xiàn)圖片上傳以及該注意的小細節(jié)

    詳解SpringMVC實現(xiàn)圖片上傳以及該注意的小細節(jié)

    本篇文章主要介紹了詳解SpringMVC實現(xiàn)圖片上傳以及該注意的小細節(jié),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Java實現(xiàn)四連環(huán)棋游戲

    Java實現(xiàn)四連環(huán)棋游戲

    這篇文章主要為大家詳細介紹了Java實現(xiàn)四連環(huán)棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • JVM中的守護線程示例詳解

    JVM中的守護線程示例詳解

    這篇文章主要給大家介紹了關(guān)于JVM中守護線程的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • SpringBoot項目加入沖突動態(tài)監(jiān)測算法的實現(xiàn)

    SpringBoot項目加入沖突動態(tài)監(jiān)測算法的實現(xiàn)

    沖突動態(tài)監(jiān)測算法是一種網(wǎng)絡(luò)通信中的沖突檢測方法,適用于無線網(wǎng)絡(luò)或其他共享傳輸介質(zhì)的環(huán)境,本文主要介紹了SpringBoot項目加入沖突動態(tài)監(jiān)測算法的實現(xiàn),感興趣的可以了解一下
    2023-09-09
  • SpringBoot添加日志鏈TraceId方式

    SpringBoot添加日志鏈TraceId方式

    配置SpringBoot日志TraceId,利用MDC和攔截器注入traceid變量,通過logback-spring.xml設(shè)置,使%X{traceid}可獲取,提升問題排查效率
    2025-08-08

最新評論

绥棱县| 黄大仙区| 康保县| 富平县| 珲春市| 乐山市| 博乐市| 哈密市| 深泽县| 博客| 桦川县| 威宁| 九寨沟县| 铜山县| 尉犁县| 定日县| 白朗县| 石渠县| 松溪县| 安徽省| 咸丰县| 承德市| 西华县| 仙居县| 安西县| 郯城县| 海盐县| 南靖县| 山西省| 长白| 新巴尔虎左旗| 吉林市| 廊坊市| 英德市| 尉氏县| 湘阴县| 潢川县| 饶阳县| 连江县| 萨迦县| 海淀区|