Sprievodca internacionalizáciou v Spring Boot

1. Prehľad

V tomto rýchlom výučbe sa pozrieme na to, ako môžeme pridať internacionalizáciu do aplikácie Spring Boot.

2. Maven závislosti

Pre vývoj potrebujeme nasledujúcu závislosť:

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

Najnovšiu verziu balíka spring-boot-starter-thymeleaf si môžete stiahnuť z Maven Central.

3. LocaleResolver

Aby naša aplikácia dokázala určiť, ktoré miestne nastavenie sa momentálne používa, musíme pridať a LocaleResolver fazuľa:

@Bean public LocaleResolver localeResolver () {SessionLocaleResolver slr = nový SessionLocaleResolver (); slr.setDefaultLocale (Locale.US); návrat slr; }

The LocaleResolver rozhranie má implementácie, ktoré určujú aktuálne miestne nastavenie na základe relácie, cookies, Prijať jazyk hlavičku alebo pevnú hodnotu.

V našom príklade sme použili rezolver založený na relácii SessionLocaleResolver a nastavte predvolené miestne nastavenie s hodnotou USA.

4. LocaleChangeInterceptor

Ďalej musíme pridať interceptorovú fazuľu, ktorá sa prepne na nové miestne nastavenie na základe hodnoty lang parameter pripojený k žiadosti:

@Bean public LocaleChangeInterceptor localeChangeInterceptor () {LocaleChangeInterceptor lci = nový LocaleChangeInterceptor (); lci.setParamName ("lang"); vrátiť lci; }

Aby sa prejavila účinnosť, je potrebné túto fazuľu pridať do registra zachytávača aplikácie.

Aby sme to dosiahli, naše @ Konfigurácia trieda musí implementovať WebMvcConfigurer rozhranie a prepísať addInterceptors () metóda:

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

5. Definovanie zdrojov správ

Aplikácia Spring Boot predvolene vyhľadáva súbory správ, ktoré obsahujú internacionalizačné kľúče a hodnoty v src / main / resources priečinok.

Súbor pre predvolené miestne nastavenie bude mať názov správy.vlastnostia súbory pre každé miestne nastavenie budú pomenované messages_XX.properties, kde XX je miestny kód.

Kľúče pre hodnoty, ktoré budú lokalizované, musia byť v každom súbore rovnaké, s hodnotami zodpovedajúcimi jazyku, ktorému zodpovedajú.

Ak kľúč neexistuje v určitom požadovanom miestnom prostredí, aplikácia sa vráti späť na predvolenú hodnotu miestneho nastavenia.

Definujme predvolený súbor správ pre volaný anglický jazyk správy.vlastnosti:

pozdrav = ahoj! Vitajte na našom webe! lang.change = Zmeniť jazyk lang.eng = Anglicky lang.fr = Francúzsky

Ďalej vytvoríme súbor s názvom messages_fr.properties pre francúzsky jazyk s rovnakými klávesmi:

pozdrav = Bonjour! Stránka Bienvenue sur notre! lang.change = Changez la langue lang.eng = Angličtina lang.fr = Francais

6. Ovládač a stránka HTML

Vytvorme mapovanie radiča, ktoré vráti jednoduchú stránku HTML s názvom international.html ktoré chceme vidieť v dvoch rôznych jazykoch:

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

Pretože na zobrazenie stránky HTML používame príkaz thymeleaf, k hodnotám špecifickým pre miestne nastavenie sa bude pristupovať pomocou klávesov so syntaxou # {key}:

Ak používate súbory JSP, syntax je:

Ak chceme vstúpiť na stránku s dvoma rôznymi miestami, musíme pridať parameter lang na adresu URL vo forme: / international? lang = fr

Ak nie lang parameter je prítomný na URL, použije aplikácia v našom prípade predvolené miestne nastavenie USA miestne nastavenie.

Poďme pridať rozbaľovaciu ponuku na našu stránku HTML s dvoma miestami, ktorých názvy sú tiež lokalizované v našich súboroch vlastností:

:     

Potom môžeme pridať skript jQuery, ktorý bude volať / medzinárodná URL s príslušnými lang parameter v závislosti na tom, ktorá rozbaľovacia možnosť je vybratá:

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

7. Spustenie aplikácie

Aby sme mohli inicializovať našu aplikáciu, musíme pridať hlavnú triedu s poznámkami @SpringBootApplication:

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

V závislosti od vybratého miestneho nastavenia stránku pri spustení aplikácie zobrazíme v angličtine alebo francúzštine.

Pozrime sa na anglickú verziu:

A teraz sa pozrime na francúzsku verziu:

8. Záver

V tomto tutoriáli sme si ukázali, ako môžeme využiť podporu internacionalizácie v aplikácii Spring Boot.

Celý zdrojový kód tohto príkladu nájdete na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found