Vodič za internacionalizaciju u Spring Boot-u

1. Pregled

U ovom brzom uputstvu pogledat ćemo kako možemo dodajte internacionalizaciju aplikaciji Spring Boot.

2. Ovisnosti Mavena

Za razvoj nam je potrebna sljedeća ovisnost:

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

Najnoviju verziju spring-boot-starter-thymeleaf možete preuzeti s Maven Central.

3. LocaleResolver

Da bi naša aplikacija mogla utvrditi koja se lokalizacija trenutno koristi, moramo dodati LocaleResolver grah:

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

The LocaleResolver Sučelje ima implementacije koje određuju trenutni jezik na temelju sesije, kolačića, Prihvati-jezik zaglavlje ili fiksna vrijednost.

U našem primjeru koristili smo rješivač zasnovan na sesiji SessionLocaleResolver i postavite zadani lokalni jezik s vrijednošću NAS.

4. LocaleChangeInterceptor

Dalje, moramo dodati grah presretača koji će se prebaciti na novu lokalizaciju na temelju vrijednosti lang parametar dodan zahtjevu:

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

Da bi stupio na snagu, ovaj grah treba dodati u registar presretača aplikacije.

Da bi to postigli, naši @Konfiguracija razred mora implementirati WebMvcConfigurer sučelje i nadjačati addInterceptors () metoda:

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

5. Utvrđivanje izvora poruka

Prema zadanim postavkama, aplikacija Spring Boot tražit će datoteke poruka koje sadrže internacionalizacijske ključeve i vrijednosti u src / glavni / resursi mapu.

Datoteka za zadani lokalni jezik imat će ime poruke.svojstva, a datoteke za svaki jezik bit će imenovane messages_XX.properties, gdje XX je lokacijski kod.

Ključevi za vrijednosti koje će biti lokalizirane moraju biti jednaki u svakoj datoteci, s vrijednostima koje odgovaraju jeziku kojem odgovaraju.

Ako ključ ne postoji u određenom zatraženom lokalnom jeziku, aplikacija će se vratiti na zadanu vrijednost lokalnog jezika.

Definirajmo zadanu datoteku poruke za engleski jezik pod nazivom poruke.svojstva:

pozdrav = Pozdrav! Dobrodošli na našu web stranicu! lang.change = Promjena jezika lang.eng = Engleski lang.fr = Francuski

Dalje, kreirajmo datoteku koja se zove poruke_fr. svojstva za francuski jezik s istim tipkama:

pozdrav = Bonjour! Web mjesto Bienvenue sur notre! lang.change = Promijeni jezik lang.eng = Engleski jezik.fr = Francuski

6. Kontroler i HTML stranica

Stvorimo mapiranje kontrolera koje će vratiti jednostavnu HTML stranicu pod nazivom međunarodna.html koje želimo vidjeti na dva različita jezika:

@Controller javna klasa PageController {@GetMapping ("/ international") javni niz getInternationalPage () {return "international"; }}

Budući da za prikaz HTML stranice koristimo majčinu dušicu, vrijednostima specifičnim za lokalni jezik pristupit će se pomoću tipki sa sintaksom #{ključ}:

Ako koristite JSP datoteke, sintaksa je:

Ako želimo pristupiti stranici s dva različita jezika, moramo dodati parametar lang na URL u obliku: / međunarodno? lang = fr

Ako ne lang parametar prisutan na URL-u, aplikacija će u našem slučaju koristiti zadani jezik NAS lokalitet.

Dodajmo padajući izbornik na našu HTML stranicu s dvije lokalizacije čija su imena također lokalizirana u našim datotekama svojstava:

:     

Tada možemo dodati jQuery skriptu koja će pozvati / međunarodna URL s odgovarajućim lang parametar, ovisno o odabranoj padajućoj opciji:

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

7. Pokretanje aplikacije

Da bismo inicijalizirali našu aplikaciju, moramo dodati glavnu klasu označenu s @SpringBootApplication:

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

Ovisno o odabranom jeziku, stranicu ćemo pregledavati na engleskom ili francuskom jeziku prilikom pokretanja aplikacije.

Pogledajmo englesku verziju:

A sada da vidimo francusku verziju:

8. Zaključak

U ovom smo uputstvu pokazali kako možemo koristiti podršku za internacionalizaciju u aplikaciji Spring Boot.

Potpuni izvorni kod za primjer možete pronaći na GitHubu.