ホームページ  >  記事  >  Java  >  Spring Boot Thymeleaf で国際化ページを構成する方法

Spring Boot Thymeleaf で国際化ページを構成する方法

WBOY
WBOY転載
2023-05-15 21:37:041793ブラウズ

###1。多言語国際化構成ファイルを作成します

プロジェクトのクラスパス リソースの下に i18n という名前のフォルダーを作成し、必要に応じて、対応する多言語国際化ファイルlogin.propertiesおよびlogin_zh_CNをそのフォルダーに書き込みます。 files

login.properties

login.tip=ログインしてください

login.username=ユーザー名
login.password=パスワード
login.rememberme=覚えてくださいme
login.button=ログイン

login_zh_CN.properties

login.tip=ログインしてください

login.username=ユーザー名
ログイン.password=パスワード
login.rememberme=記憶してください
login.button=ログイン

login_en_US.properties

login.tip=サインインしてください

login.username=ユーザー名
login.password=パスワード
login.rememberme=記憶してください
login.button=Login

login.properties これはカスタムのデフォルト言語です設定ファイル、login_zh_CN.properties はカスタム中国語国際化ファイル、login_en_US.properties はカスタム英語国際化ファイル

Spring Boot によってデフォルトで認識される言語設定ファイルは、以下のクラスmessages.propertiesであることに注意してください。パス リソース。他の言語の国際化ファイルの名前は、厳密に「ファイル プレフィックス名言語コード国コード.properties」の形式で命名する必要があります。

この例では、プロジェクト クラス パス リソースの下でカスタマイズされます。 i18n パッケージは、多言語構成ファイルの統合構成および管理用に作成されており、プロジェクトのデフォルト言語構成ファイル名は、login.properties としてカスタマイズされています。したがって、国際化されたファイルのベース名は、プロジェクトのグローバル構成ファイルで構成する前に構成する必要があります。カスタマイズされた国際化ファイル

2.構成ファイルを書き込みます

プロジェクトの application.properties グローバル構成ファイルを開き、ファイルに国際化されたファイル ベース名の設定を追加します。その内容は次のとおりです。国際化ファイルのベース名を設定する

spring.messages.basename=i18n.login

spring.messages.basename=i18n.login" は、カスタム国際化ファイルのベース名を設定します。 i18n は、国際化されたファイルが相対的であることを意味しますプロジェクト クラス パス リソースの場所、ログインは多言語ファイルのプレフィックス名を表します開発者が Spring Boot のデフォルトの識別メカニズムに完全に従い、messages.properties などの国際化されたファイルを以下に書き込む場合プロジェクトのクラスパスリソースでは、国際化ファイルのベース名は省略できます。設定

3. カスタマイズされた地域情報パーサー

で多言語国際化ファイルの作成と設定が完了したら前のステップでは、国際化のフロントエンド ページで Thymeleaf テンプレートの関連属性を正式に組み合わせて言語設定と表示を行うことができましたが、この実装ではリクエスト ヘッダーの言語情報 (ブラウザ言語情報) を使用して言語を自動的に切り替えます。一部のプロジェクトは、カスタマイズされた地域解析を必要とする手動言語切り替え機能も提供します。

プロジェクト内に com.lagou.config という名前のパッケージを作成し、カスタム構成クラス MyLocalResovel

を作成します。
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();
    }
}
# は、国際化された機能領域情報パーサーをカスタマイズするために、このパッケージの下にあります。 ##MyLocalResolver カスタム地域リゾルバー構成クラスは、LocaleResolver インターフェイスを実装し、カスタム言語解決用にsolveLocale() メソッドを書き換えます。最後に、 @Bean アノテーションを使用して登録します現在の設定クラスを Spring コンテナの LocaleResolver Bean コンポーネントとして取得し、デフォルトの LocaleResolver コンポーネントをオーバーライドできるようにする このうち、resolveLocale() メソッドでは、リクエストパラメータ l とリクエストヘッダパラメータをそれぞれ異なるメソッドに従って取得します(言語情報の手動切り替え、ブラウザリクエストヘッダーの言語情報の自動切り替え) Accept-Language が必要で、リクエストパラメータ l が空でない場合は、l パラメータで指定された言語が言語切り替えの標準として使用されます。 , 自動切り替えは、リクエストヘッダー情報によってカスタマイズされます。多言語構成ファイルの形式 (login_zh_CN.properties など); リクエスト ヘッダー パラメーターの言語では Accept-Language アセンブリを自動的に切り替える場合、リクエスト ヘッダーによって決定される切り取りにダッシュ "-" が使用されます。ブラウザによって送信される情報スタイル (例: Accept-Language: en-US,en;q=0.9,zh-CN ;q=0.8,zh;q=0.7)

4.ページの国際化では、

プロジェクト テンプレートのテンプレート フォルダーにあるユーザー ログイン ページの login.html を開き、Thymeleaf テンプレート エンジンと組み合わせて国際化機能を実装します

<!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=&#39;zh_CN&#39;)}" rel="external nofollow" >中文</a> <!--注意这个路径是我们controller访问页面的路径,不同的是这次携带了参数,可以帮我们用来区分locale-->
            <a class="btn btn-sm" th:href="@{/toLoginPage(l=&#39;en_US&#39;)}" rel="external nofollow" >English</a>
        </form>
    </body>
</html>

#{} メッセージを使用しますThymeleaf テンプレートの式 国際表示用にいくつかの情報を設定します。 rememberme 国際化を設定する場合、国際化する必要がある rememberme は input タグの外側にあるため、ここではインライン式 [[#login.rememberme}]] を使用して、国際化ファイル内の login.rememberme 情報を動的に取得します。さらに、中国語と英語の間で手動で言語を切り替えるための機能リンクがフォームの最後に提供されています。リンクをクリックすると、各国語パラメータが転送され、「/」パスへのジャンプが要求され、手動言語が切り替わります。切り替えは、カスタマイズされた地域パーサーを通じてバックグラウンドで実行されます。

注: コントローラ制御層の処理は省略されています

5.統合効果テスト

#クリック後

Spring Boot Thymeleaf で国際化ページを構成する方法

言語国際化切り替えの「英語」リンクをクリックすると、指定された「l=zh_CN」パラメータが引き継がれます。バックグラウンドでカスタマイズされた地域パーサー構成クラス MyLocalResovel の解析メソッドがベースになります。 on 言語切り替えルールをカスタマイズして、国際言語を手動で切り替える効果を実現します

以上がSpring Boot Thymeleaf で国際化ページを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。