文章出處
文章列表
在thymeleaf 里面有個消息表達式: #{...} , 可以借此來實現國際化.
在我使用這個功能的時候, 碰到了一個問題, 按照 JavaEE開發的顛覆者 Spring Boot實戰 上面編碼的時候, 出現了以下問題, 相信很多人都碰到過.
??home.welcome_zh_CN??
這里推薦一篇博客, 里面有解決辦法. 玩轉spring boot——國際化
我也想將我自己代碼記錄下來.
一. 目錄預覽
這里我并沒有按照資料上所述的, 將properties文件建在 index.html 同級別目錄下, 也沒有將名稱命名為: index.properties
之前是這么弄的, 但是有上述問題.
二. properties文件內容
messages.properties:
welcome=welcome here! and 歡迎歡迎!
這個是在, 沒有語言匹配上的時候, 才會顯示
messages_en_US.properties:
welcome=welcome here!
messages_zh_CN.properties:
welcome=歡迎歡迎!
三. 控制器
package org.elvin.learn.springboot.controller; import org.elvin.learn.springboot.pojo.Book; import org.joda.time.DateTime; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList; import java.util.List; /** * author: Elvin * Date: 2017/12/13 9:29 * Description: */ @Controller @RequestMapping("thy") public class ThyController { @GetMapping("index") public String index(Model model) { model.addAttribute("color", "red"); return "thy/index"; } }
四. 視圖
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" > <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"/> <title>Title</title> <!--@ { } 鏈接網址表達式, 會自動加入虛擬路徑--> <link th:href="@{/bootstrap-3.3.7/css/bootstrap.css}" rel="stylesheet"/> <link th:href="@{/bootstrap-3.3.7/css/bootstrap-theme.css}" rel="stylesheet"/> <style th:inline="text"> /*通過[ [ $ { }]]的方式訪問model中的屬性*/ .bgcolor { background-color:[[${color}]] } </style> </head> <body> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">歡迎</h3> <a style="background-color: #0f0f0f" th:href="@{/thy/index?lang=en_US}">English(US)</a> <a style="background-color: #0f0f0f" th:href="@{/thy/index?lang=zh_CN}">簡體中文</a> </div> <div class="panel-body"> <!-- $ { }變量表達式, 可以訪問model中的屬性 --> <span class="bgcolor" th:utext="#{welcome}">hahaha</span> </div> </div> </body> </html>
五. 結果
使用火狐瀏覽器(可以調顯示語言).
第一次打開的時候, 已經是能正常顯示的了. 不再報錯
此時, 調整火狐默認顯示語言
刷新頁面:
可能有人注意到, 我這里有兩個鏈接, 用來切換顯示的. 按照上面的方式, 是不能這么切換的. 此時需要做一些修改
六. 自定義顯示
加入配置文件
package org.elvin.learn.springboot.conf; import java.util.Locale; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; 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.WebMvcConfigurerAdapter; import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; import org.springframework.web.servlet.i18n.SessionLocaleResolver; @Configuration @EnableAutoConfiguration @ComponentScan public class LocaleConfig extends WebMvcConfigurerAdapter { @Bean public LocaleResolver localeResolver() { SessionLocaleResolver slr = new SessionLocaleResolver(); // 默認語言 //slr.setDefaultLocale(Locale.US); return slr; } @Bean public LocaleChangeInterceptor localeChangeInterceptor() { LocaleChangeInterceptor lci = new LocaleChangeInterceptor(); // 參數名 lci.setParamName("lang"); return lci; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localeChangeInterceptor()); } }
這里的默認語言可設置, 也可不設置. 如果不設置, 就會根據瀏覽器默認語言去判斷顯示哪一個信息.
七. 結果
這里可以根據 lang 去自己選擇顯示那種語言了
文章列表
全站熱搜