Rumah  >  Artikel  >  Java  >  Bagaimana untuk mengkonfigurasi halaman pengantarabangsaan dalam Spring boot Thymeleaf

Bagaimana untuk mengkonfigurasi halaman pengantarabangsaan dalam Spring boot Thymeleaf

WBOY
WBOYke hadapan
2023-05-15 21:37:041832semak imbas

1. Tulis fail konfigurasi pengantarabangsaan berbilang bahasa

Buat folder bernama i18n di bawah sumber laluan kelas projek dan tulis fail pengantarabangsaan berbilang bahasa yang sepadan login.properties dan login_zh_CN dalam folder seperti yang diperlukan dan login_en_US.properties fail

login.properties

login.tip=Sila log masuk
log masuk.nama pengguna=nama pengguna
log masuk.kata laluan=kata laluan
log masuk.rememberme=Remember saya
login.button=Log Masuk

login_zh_CN.properties

login.tip=Sila log masuk
login.username=Nama Pengguna
log masuk .password=Password
login.rememberme=Ingat saya
login.button=Log masuk

login_en_US.properties

petua=Sila log masuk
login.username=Username
login.password=Kata Laluan
login.rememberme=Ingat saya
login.button=Login

login.properties Ia adalah bahasa lalai yang disesuaikan fail konfigurasi, login_zh_CN.properties ialah fail pengantarabangsaan Cina tersuai, login_en_US.properties ialah fail pengantarabangsaan Inggeris tersuai

Perlu diingat bahawa fail konfigurasi bahasa yang diiktiraf oleh Spring Boot secara lalai ialah mesej kelas.properties di bawah sumber laluan; nama fail pengantarabangsaan bahasa lain mesti dinamakan dengan ketat dalam bentuk "nama awalan fail kod bahasa kod negara.properties"

Dalam contoh ini, ia disesuaikan di bawah sumber laluan kelas projek An Pakej i18n dicipta untuk konfigurasi bersatu dan pengurusan fail konfigurasi berbilang bahasa, dan nama fail konfigurasi bahasa lalai projek disesuaikan sebagai login.properties Oleh itu, nama asas fail antarabangsa mesti dikonfigurasikan dalam fail konfigurasi global projek untuk dirujuk fail pengantarabangsaan tersuai

2. Tulis fail konfigurasi

Buka fail konfigurasi global application.properties dan tambahkan tetapan nama asas fail antarabangsa dalam fail tersebut: Fail

# Konfigurasikan nama asas fail antarabangsa
spring.messages.basename=i18n.login

spring.messages.basename=i18n.login" menetapkan nama asas fail antarabangsa tersuai. Antaranya, i18n bermaksud bahawa fail antarabangsa adalah relatif Lokasi sumber laluan kelas projek, log masuk mewakili nama awalan fail berbilang bahasa Jika pembangun mengikuti sepenuhnya mekanisme pengenalan lalai Spring Boot dan menulis fail antarabangsa seperti mesej .properties di bawah sumber laluan kelas projek, nama asas fail antarabangsa boleh ditinggalkan Konfigurasi

3 Penghurai maklumat wilayah tersuai

Selepas melengkapkan penulisan dan konfigurasi berbilang bahasa. pengantarabangsaan dalam langkah sebelumnya, anda boleh secara rasmi menggabungkan atribut berkaitan templat Thymeleaf di halaman hujung hadapan untuk pengantarabangsaan Walau bagaimanapun, pelaksanaan ini menggunakan maklumat bahasa dalam pengepala permintaan (maklumat bahasa pelayar) untuk menukar bahasa secara lalai . Sesetengah projek juga menyediakan fungsi penukaran bahasa manual, yang memerlukan penghuraian serantau tersuai

Buat pakej bernama com.lagou.config dalam projek dan buat kelas konfigurasi tersuai MyLocalResovel

rreeeKelas konfigurasi penyelesai kawasan tersuai MyLocalResolver melaksanakan antara muka LocaleResolver dan menulis semula kaedah resolveLocale() untuk resolusi bahasa tersuai Akhirnya, anotasi @Bean digunakan untuk mendaftarkan kelas konfigurasi semasa sebagai LocaleResolver dalam bekas Spring Bean, supaya komponen LocaleResolver lalai boleh ditindih Dalam kaedah resolveLocale(), parameter permintaan l dan parameter pengepala permintaan diperoleh mengikut keperluan yang berbeza (penukaran manual maklumat bahasa. penukaran maklumat bahasa secara automatik mengikut tajuk permintaan pelayar). maklumat pengepala permintaan

Perlu diambil perhatian bahawa, Apabila menukar bahasa parameter permintaan l secara manual, garis bawah "_" digunakan untuk memotong, yang ditentukan oleh format konfigurasi berbilang bahasa fail (seperti login_zh_CN.properties); semasa dalam bahasa parameter pengepala permintaan Accept-Language Apabila menukar pemasangan secara automatik, tanda sempang "-" digunakan untuk memotong, yang ditentukan oleh gaya maklumat pengepala permintaan yang dihantar oleh penyemak imbas ( contohnya, Accept-Language: en-US,en;q=0.9,zh-CN ;q=0.8,zh;q=0.7)

4. Untuk pengantarabangsaan halaman, gunakan

untuk membuka halaman log masuk pengguna login.html dalam folder templat templat projek, dan gabungkannya dengan enjin templat Thymeleaf untuk melaksanakan fungsi pengantarabangsaan

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();
    }
}

Gunakan # {} ungkapan mesej templat Thymeleaf Sediakan beberapa maklumat untuk paparan antarabangsa. Apabila menetapkan pengantarabangsaan rememberme, rememberme yang perlu diantarabangsakan berada di luar teg input, jadi ungkapan sebaris [[#login.rememberme}]] digunakan di sini untuk mendapatkan maklumat log masuk.rememberme secara dinamik dalam fail pengantarabangsaan. Selain itu, pautan berfungsi untuk penukaran bahasa manual antara bahasa Cina dan bahasa Inggeris disediakan pada penghujung borang Apabila pautan diklik, parameter bahasa kebangsaan akan dibawa untuk meminta lompatan ke laluan "/" dan bahasa manual. penukaran akan dilakukan melalui penghurai serantau tersuai di latar belakang.

Nota: Pemprosesan lapisan kawalan pengawal ditinggalkan

5. Ujian kesan integrasi

Bagaimana untuk mengkonfigurasi halaman pengantarabangsaan dalam Spring boot Thymeleaf

Selepas mengklik

Bagaimana untuk mengkonfigurasi halaman pengantarabangsaan dalam Spring boot Thymeleaf

Apabila mengklik pautan "Bahasa Inggeris" untuk menukar pengantarabangsaan bahasa, parameter "l=zh_CN" yang ditentukan dibawa Kaedah penghuraian dalam kelas konfigurasi parser wilayah tersuai MyLocalResovel akan berdasarkan pada Sesuaikan peraturan untuk penukaran bahasa, dengan itu mencapai kesan penukaran bahasa antarabangsa secara manual

Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi halaman pengantarabangsaan dalam Spring boot Thymeleaf. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam