###1。多言語国際化構成ファイルを作成します
プロジェクトのクラスパス リソースの下に i18n という名前のフォルダーを作成し、必要に応じて、対応する多言語国際化ファイルlogin.propertiesおよびlogin_zh_CNをそのフォルダーに書き込みます。 fileslogin.propertieslogin.tip=ログインしてくださいlogin_zh_CN.propertieslogin.username=ユーザー名
login.password=パスワード
login.rememberme=覚えてくださいme
login.button=ログイン
login.tip=ログインしてくださいlogin_en_US.propertieslogin.username=ユーザー名
ログイン.password=パスワード
login.rememberme=記憶してください
login.button=ログイン
login.tip=サインインしてくださいlogin.properties これはカスタムのデフォルト言語です設定ファイル、login_zh_CN.properties はカスタム中国語国際化ファイル、login_en_US.properties はカスタム英語国際化ファイル Spring Boot によってデフォルトで認識される言語設定ファイルは、以下のクラスmessages.propertiesであることに注意してください。パス リソース。他の言語の国際化ファイルの名前は、厳密に「ファイル プレフィックス名言語コード国コード.properties」の形式で命名する必要があります。この例では、プロジェクト クラス パス リソースの下でカスタマイズされます。 i18n パッケージは、多言語構成ファイルの統合構成および管理用に作成されており、プロジェクトのデフォルト言語構成ファイル名は、login.properties としてカスタマイズされています。したがって、国際化されたファイルのベース名は、プロジェクトのグローバル構成ファイルで構成する前に構成する必要があります。カスタマイズされた国際化ファイル2.構成ファイルを書き込みますプロジェクトの application.properties グローバル構成ファイルを開き、ファイルに国際化されたファイル ベース名の設定を追加します。その内容は次のとおりです。国際化ファイルのベース名を設定するlogin.username=ユーザー名
login.password=パスワード
login.rememberme=記憶してください
login.button=Login
spring.messages.basename=i18n.login
spring.messages.basename=i18n.login" は、カスタム国際化ファイルのベース名を設定します。 i18n は、国際化されたファイルが相対的であることを意味しますプロジェクト クラス パス リソースの場所、ログインは多言語ファイルのプレフィックス名を表します開発者が Spring Boot のデフォルトの識別メカニズムに完全に従い、messages.properties などの国際化されたファイルを以下に書き込む場合プロジェクトのクラスパスリソースでは、国際化ファイルのベース名は省略できます。設定
3. カスタマイズされた地域情報パーサー
で多言語国際化ファイルの作成と設定が完了したら前のステップでは、国際化のフロントエンド ページで Thymeleaf テンプレートの関連属性を正式に組み合わせて言語設定と表示を行うことができましたが、この実装ではリクエスト ヘッダーの言語情報 (ブラウザ言語情報) を使用して言語を自動的に切り替えます。一部のプロジェクトは、カスタマイズされた地域解析を必要とする手動言語切り替え機能も提供します。
package com.lagou.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.StringUtils; import org.springframework.web.servlet.LocaleResolver; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Locale; @Configuration public class MyLocalResolver implements LocaleResolver { // 完成自定义 区域解析方式 @Override public Locale resolveLocale(HttpServletRequest request) { // 获取页面手动传递的语言参数值 : zh_CN en_US "" String l = request.getParameter("l"); Locale locale = null; if (!StringUtils.isEmpty(l)) { // 如果参数不为空,就根据参数值,进行手动语言切换 String[] s = l.split("_"); locale = new Locale(s[0], s[1]); } else { // Accept-Language: zh-CN,zh;q=0.9 String header = request.getHeader("Accept-Language"); String[] split = header.split(","); String[] split1 = split[0].split("-"); locale = new Locale(split1[0], split1[1]); } return locale; } @Override public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { } // 将自定义的LocaleResolver重新注册成一个类型为LocaleResolver的Bean组件 @Bean public LocaleResolver localeResolver() { return new MyLocalResolver(); } }
<!DOCTYPE html> <html lang="en" 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,shrinkto- fit=no"> <title>用户登录界面</title> <link th:href="@{/login/css/bootstrap.min.css}" rel="external nofollow" rel="stylesheet"> <link th:href="@{/login/css/signin.css}" rel="external nofollow" rel="stylesheet"> </head> <body class="text-center"> <!-- 用户登录form表单 --> <form class="form-signin"> <img class="mb-4" th:src="@{/login/img/login.jpg}" style="max-width:90%" style="max-width:90%" alt="Spring Boot Thymeleaf で国際化ページを構成する方法" > <h2 class="h4 mb-3 font-weight-normal" th:text="#{login.tip}">请登录</h2> <input type="text" class="form-control" th:placeholder="#{login.username}" required="" autofocus=""> <input type="password" class="form-control" th:placeholder="#{login.password}" required=""> <div class="checkbox mb-3"> <label> <input type="checkbox" value="remember-me" > [[#{login.rememberme}]] </label> </div> <button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login.button}">登录</button> <p class="mt-5 mb-3 text-muted">© <span th:text="${currentYear}">2019</span>-<span th:text="${currentYear}+1">2020</span></p> <a class="btn btn-sm" th:href="@{/toLoginPage(l='zh_CN')}" rel="external nofollow" >中文</a> <!--注意这个路径是我们controller访问页面的路径,不同的是这次携带了参数,可以帮我们用来区分locale--> <a class="btn btn-sm" th:href="@{/toLoginPage(l='en_US')}" rel="external nofollow" >English</a> </form> </body> </html>
#クリック後
言語国際化切り替えの「英語」リンクをクリックすると、指定された「l=zh_CN」パラメータが引き継がれます。バックグラウンドでカスタマイズされた地域パーサー構成クラス MyLocalResovel の解析メソッドがベースになります。 on 言語切り替えルールをカスタマイズして、国際言語を手動で切り替える効果を実現します
以上がSpring Boot Thymeleaf で国際化ページを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。