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.