Panduan Pengantarabangsaan dalam Spring Boot

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan melihat bagaimana kita dapat menambahkan pengantarabangsaan ke aplikasi Spring Boot .

2. Pergantungan Maven

Untuk pembangunan, kita memerlukan kebergantungan berikut:

 org.springframework.boot spring-boot-starter-thymeleaf 1.5.2.RELEASE 

Versi terbaru spring-boot-starter-thymeleaf boleh dimuat turun dari Maven Central.

3. Penyelesai Lokasi

Agar aplikasi kami dapat menentukan lokasi mana yang sedang digunakan, kami perlu menambahkan kacang LocaleResolver :

@Bean public LocaleResolver localeResolver() { SessionLocaleResolver slr = new SessionLocaleResolver(); slr.setDefaultLocale(Locale.US); return slr; }

Antara muka LocaleResolver mempunyai pelaksanaan yang menentukan lokal semasa berdasarkan sesi, kuki, tajuk Penerimaan -Bahasa , atau nilai tetap.

Dalam contoh kami, kami telah menggunakan penyelesai berdasarkan sesi SessionLocaleResolver dan menetapkan tempat lalai dengan nilai AS .

4. LocaleChangeInterceptor

Seterusnya, kita perlu menambahkan kacang interceptor yang akan beralih ke lokasi baru berdasarkan nilai parameter lang yang ditambahkan pada permintaan:

@Bean public LocaleChangeInterceptor localeChangeInterceptor() { LocaleChangeInterceptor lci = new LocaleChangeInterceptor(); lci.setParamName("lang"); return lci; }

Untuk berkuat kuasa, kacang ini perlu ditambahkan ke daftar pemintas aplikasi.

Untuk mencapainya, kelas @Configuration kami harus melaksanakan antara muka WebMvcConfigurer dan mengganti kaedah addInterceptors () :

@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localeChangeInterceptor()); }

5. Menentukan Sumber Mesej

Secara lalai, aplikasi Spring Boot akan mencari fail mesej yang mengandungi kunci dan nilai pengantarabangsaan dalam folder src / main / resources .

Fail untuk lokasi lalai akan mempunyai nama message.properties , dan fail untuk setiap lokasi akan diberi nama message_XX.properties , di mana XX adalah kod lokal.

Kunci untuk nilai yang akan dilokalkan harus sama di setiap fail, dengan nilai yang sesuai dengan bahasa yang sesuai dengannya.

Sekiranya kunci tidak ada di tempat yang diminta tertentu, maka aplikasi akan kembali ke nilai tempat lalai.

Mari tentukan fail mesej lalai untuk bahasa Inggeris yang disebut message.properties :

greeting=Hello! Welcome to our website! lang.change=Change the language lang.eng=English lang.fr=French

Seterusnya, mari buat fail yang disebut message_fr.properties untuk bahasa Perancis dengan kunci yang sama:

greeting=Bonjour! Bienvenue sur notre site! lang.change=Changez la langue lang.eng=Anglais lang.fr=Francais

6. Halaman Pengawal dan HTML

Mari buat pemetaan pengawal yang akan mengembalikan halaman HTML ringkas yang disebut international.html yang ingin kita lihat dalam dua bahasa yang berbeza:

@Controller public class PageController { @GetMapping("/international") public String getInternationalPage() { return "international"; } }

Oleh kerana kami menggunakan daun bidara untuk memaparkan halaman HTML, nilai-nilai khusus lokasi akan diakses menggunakan kunci dengan sintaks # {key} :

Sekiranya menggunakan fail JSP, sintaksnya adalah:

Sekiranya kita ingin mengakses halaman dengan dua lokasi yang berbeza, kita harus menambahkan parameter lang ke URL dalam bentuk: / internasional? Lang = fr

Sekiranya tidak ada parameter lang pada URL, aplikasi akan menggunakan bahasa lalai, dalam hal ini lokasi AS .

Mari tambahkan drop-down ke halaman HTML kami dengan dua lokasi yang namanya juga dilokalkan dalam fail harta tanah kami:

:     

Kemudian kita boleh menambahkan skrip jQuery yang akan memanggil URL antarabangsa / dengan parameter lang masing-masing bergantung pada pilihan drop-down mana yang dipilih:

   $(document).ready(function() { $("#locales").change(function () { var selectedOption = $('#locales').val(); if (selectedOption != ''){ window.location.replace('international?lang=' + selectedOption); } }); }); 

7. Menjalankan Aplikasi

Untuk memulakan aplikasi kami, kami harus menambahkan kelas utama yang diberi penjelasan dengan @SpringBootApplication :

@SpringBootApplication public class InternationalizationApp { public static void main(String[] args) { SpringApplication.run(InternationalizationApp.class, args); } }

Bergantung pada lokasi yang dipilih, kami akan melihat halaman dalam bahasa Inggeris atau Perancis semasa menjalankan aplikasi.

Mari lihat versi Bahasa Inggeris:

Dan sekarang mari kita lihat versi Perancis:

8. Kesimpulannya

Dalam tutorial ini, kami telah menunjukkan bagaimana kami dapat menggunakan sokongan untuk pengantarabangsaan dalam aplikasi Spring Boot.

Kod sumber lengkap untuk contoh boleh didapati di GitHub.