Guide to Internationalization in Spring Boot

1. Oversikt

I denne raske opplæringen skal vi se på hvordan vi kan legge til internasjonalisering i en Spring Boot-applikasjon.

2. Maven-avhengigheter

For utvikling trenger vi følgende avhengighet:

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

Den siste versjonen av spring-boot-starter-thymeleaf kan lastes ned fra Maven Central.

3. Lokal løsning

For at applikasjonen vår skal være i stand til å bestemme hvilket land som brukes for øyeblikket, må vi legge til en Lokal løsning bønne:

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

De Lokal løsning grensesnittet har implementeringer som bestemmer gjeldende sted basert på økten, informasjonskapsler, Godta-språk topptekst, eller en fast verdi.

I vårt eksempel har vi brukt den sesjonsbaserte løseren SessionLocaleResolver og angi et standard sted med verdi OSS.

4. LocaleChangeInterceptor

Deretter må vi legge til en interceptor bønne som vil bytte til et nytt sted basert på verdien av lang parameter lagt til en forespørsel:

@Bean offentlig LocaleChangeInterceptor localeChangeInterceptor () {LocaleChangeInterceptor lci = ny LocaleChangeInterceptor (); lci.setParamName ("lang"); returnere lci; }

For å kunne tre i kraft, må denne bønnen legges til applikasjonens avlytterregister.

For å oppnå dette, vår @Konfigurasjon klassen må implementere WebMvcConfigurer grensesnitt og overstyre addInterceptors () metode:

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

5. Definere meldingskildene

Som standard vil et Spring Boot-program lete etter meldingsfiler som inneholder internasjonaliseringsnøkler og verdier i src / main / resources mappe.

Filen for standardinnstillingen vil ha navnet meldinger. eiendommer, og filer for hvert sted blir kalt messages_XX.properties, hvor XX er stedskoden.

Tastene for verdiene som skal lokaliseres, må være de samme i hver fil, med verdier som er passende for språket de tilsvarer.

Hvis det ikke finnes en nøkkel i et bestemt ønsket land, vil applikasjonen falle tilbake til standard språkverdi.

La oss definere en standard meldingsfil for det engelske språket som heter meldinger. eiendommer:

hilsen = Hei! Velkommen til hjemmesiden vår! lang.change = Bytt språk lang.eng = Engelsk lang.fr = Fransk

La oss deretter lage en fil som heter messages_fr.properties for det franske språket med de samme tastene:

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

6. Kontroller og HTML-side

La oss lage en kontroller kartlegging som vil returnere en enkel HTML-side kalt internasjonal.html som vi ønsker å se på to forskjellige språk:

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

Siden vi bruker thymeleaf for å vise HTML-siden, vil du få tilgang til de stedsspesifikke verdiene ved hjelp av tastene med syntaksen #{nøkkel}:

Hvis du bruker JSP-filer, er syntaksen:

Hvis vi vil ha tilgang til siden med de to forskjellige stedene, må vi legge til parameteren lang til URL-en i skjemaet: / internasjonal? lang = fr

Hvis nei lang parameter er til stede på URL-en, vil applikasjonen bruke standard språk, i vårt tilfelle OSS lokal.

La oss legge til en rullegardin på HTML-siden vår med de to lokalene hvis navn også er lokalisert i eiendomsfilene våre:

:     

Deretter kan vi legge til et jQuery-skript som vil kalle /internasjonal URL med respektive lang parameter avhengig av hvilket rullegardinalternativ som er valgt:

   $ (dokument) .ready (function () {$ ("# locales"). endring (function () {var valgtOption = $ ('# locales'). val (); hvis (valgtOption! = '') {vindu .location.replace ('international? lang =' + valgt valg);}});}); 

7. Kjøre applikasjonen

For å initialisere søknaden vår, må vi legge til hovedklassen som er merket med @SpringBootApplication:

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

Avhengig av valgt sted vil vi vise siden på engelsk eller fransk når du kjører applikasjonen.

La oss se den engelske versjonen:

Og la oss nå se den franske versjonen:

8. Konklusjon

I denne veiledningen har vi vist hvordan vi kan bruke støtten til internasjonalisering i en Spring Boot-applikasjon.

Hele kildekoden for eksemplet finner du på GitHub.