Internationalisering, ook wel i18n genoemd, waarom deze naam? Omdat internationalisering Engels internationalisering is, staan er 18 letters tussen i en n, dus heet het i18n. Als onze applicatie geïnnationaliseerd is, kan deze eenvoudig worden gewisseld in verschillende taalomgevingen; de meest voorkomende is de overschakeling tussen Chinees en Engels, en de internationalisatiefunctie is ook vrij gebruikelijk.
Stel bijvoorbeeld bij het verzenden van een specifiek verzoek een sleutel-waardepaar in in de header: "Accept-Language":"zh", waarbij de server via de bijbehorende waarde van Accept-Language kan beslissen welke regiotaal gebruikt wordt, het bijbehorende resourcebestand vinden, het formattieren en terugsturen naar de client.
Maak een nieuw Spring Boot-project aan, maak een i18n-bestand aan onder de resources-map, en maak een nieuw configuratiebestand aan onder deze map volgens het "Language Abbreviation Table"-formaat, zoals te zien is in de onderstaande figuur:
Message.Eigenschappen
message_en.eigenschappen
Vergeet niet configuratieparameters toe te voegen om application.properties te bewerken zodat onze configuratie effectief is:
Spring definieertMessageSourceinterfaces voor toegang tot geïnternationaliseerde informatie.
getMessage(Stringcode, Object[] args, String defaultMessage, Locale locale) getMessage(Stringcode, Object[] args, Locale locale) getMessage(MessageSourceResolvable resolvable, Locale locale)
Maak een nieuwe controller aan en probeer een ander resourcebestand aan te roepen om een prompt met de volgende code terug te geven:
Het project wordt ingezet onder een Windows-server in het Chinees, en er is geen probleem met Chinese gebruikers die toegang krijgen tot Chinees. Bij het uitrollen naar de Engelse versie van Linux zullen Chinese gebruikers een Engelse prompt geven (lees de configuratie van het Engelse resourcebestand).
De reden hiervoor is vanwege onsEr is helemaal geen nieuw Chinees .properties-bestand, op dit moment leest het programma het resourcebestand dat overeenkomt met de huidige systeemtaal, en als het niet opnieuw gelezen kan worden, kan het geen configuratie van het geïdentificeerde properties-bestand lezen。 Wanneer we het project publiceren op het Linux Engelse systeem, kan het programma de Chinese configuratie niet lezen, maar leest het het configuratiebestand van _en.properties, waardoor de interface de Chinese prompt teruggeeft.
Oplossing, settingFallbackToSystemLocaleOnwaar, de code is als volgt:
(Einde)
|