Spring MVC Internationalization (i18n) och Localization (L10n) Exempel

Spring MVC Internationalisering (i18n) och lokalisering (L10n) exempel

Inledning

I dagens globaliserade värld blir det allt viktigare för företag och organisationer att kunna kommunicera effektivt med en mångkulturell publik. Internationalisering (i18n) och lokalisering (L10n) är två viktiga aspekter av internationell kommunikation som gör det möjligt att anpassa innehåll till olika språk och kulturer.

Spring MVC, en populär webbrameverk för Java, har stöd för i18n och L10n, vilket gör det enkelt att skapa flerspråkiga webbaserade applikationer. Den här artikeln kommer att ge ett detaljerat exempel på hur man använder Spring MVC för att internationalisera och lokalisera applikationer.

H2: Internationalisering (i18n)

Internationalisering avser processen att designa och utveckla en applikation som kan anpassas till olika språk utan att ändra applikationens källkod. Detta innebär vanligtvis att man separerar textsträngar från koden och skapar resurspaket med översatta strängar för varje målspråk.

I Spring MVC kan i18n implementeras genom att använda följande steg:

H3: Definiera meddelandekällor

Först definierar vi en meddelandekälla, som är ett gränssnitt som tillhandahåller åtkomst till lokaliserade meddelanden. Spring MVC stöder flera typer av meddelandekällor, till exempel:

* ResourceBundleMessageSource: Ladda meddelanden från egenskapsfiler.
* ReloadableResourceBundleMessageSource: Samma som ovan, men uppdateras automatiskt när egenskapsfilerna ändras.
* DatabaseMessageSource: Ladda meddelanden från en databas.

H3: Skapa lokaliserade meddelanden

Därefter skapar vi lokaliserade meddelanden genom att lägga till översatta strängar till resurspaket. I Spring MVC lagras resurspaket vanligtvis i egenskapsfiler som är uppkallade efter språkkoden. Till exempel:

* messages_sv.properties för svenska
* messages_en.properties för engelska

H3: Injicera meddelandekällan

I våra kontrollanter injicerar vi meddelandekällan som en egenskap med hjälp av Spring-annotioner. Detta gör det möjligt för oss att få åtkomst till lokaliserade meddelanden i våra kontrollanter.

H2: Lokalisering (L10n)

Lokalisering handlar om att anpassa en applikation till en specifik region eller kultur. Detta kan innebära att man anpassar språk, valuta, datumformat, decimaltecken och andra kulturella aspekter.

I Spring MVC kan L10n implementeras genom att använda följande steg:

H3: Definiera lokalemanager

Först definierar vi en lokalemanager, som är en komponent som hanterar lokaliseringsinställningar. Spring MVC stöder flera typer av lokalemanager, till exempel:

* LocaleResolver: Bestämmer lokalet baserat på kriterier som språk i begäran.
* LocaleChangeInterceptor: Tillåter användare att växla lokalet dynamiskt.

H3: Skapa lokalhanterare

Därefter skapar vi lokalhanterare som implementerar gränssnitten LocaleResolver eller LocaleChangeInterceptor. I Spring MVC finns det inbyggda implementeringar som AcceptHeaderLocaleResolver och SessionLocaleResolver.

H3: Injicera lokalhanterare

Slutligen injicerar vi lokalhanteraren som en egenskap i våra kontrollanter med hjälp av Spring-annotioner. Detta gör det möjligt för oss att få åtkomst till lokaliseringsinställningar i våra kontrollanter.

H2: Exempelkod

ResourceBundleMessageSource:


@Configuration
public class I18nConfig {

@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}
}

AcceptHeaderLocaleResolver:


@Configuration
public class L10nConfig {

@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(Locale.ENGLISH);
return localeResolver;
}
}

Kontroller som använder i18n och L10n:


@Controller
public class MyController {

@Autowired
private MessageSource messageSource;

@Autowired
private LocaleResolver localeResolver;

@GetMapping("/")
public String home() {
Locale locale = localeResolver.resolveLocale(request);
String message = messageSource.getMessage("welcome", null, locale);
return "home";
}
}

Slutsats

Spring MVC:s stöd för i18n och L10n gör det enkelt att skapa flerspråkiga webbaserade applikationer som når ut till en global publik. Genom att separera textsträngar från koden och skapa lokaliserade resurspaket kan vi säkerställa att innehåll anpassas korrekt till användarnas språk och regioner.

Att implementera i18n och L10n förbättrar inte bara användarupplevelsen utan ökar också applikationens tillgänglighet och räckvidd för nya marknader. Genom att följa de beskrivna stegen och implementera de givna kodfragmenten kan utvecklare skapa robusta och kulturellt medvetna applikationer med Spring MVC.

Vanliga frågor (FAQ)

F1: Vad är skillnaden mellan i18n och L10n?
S: i18n avser att göra applikationer språkneutrala, medan L10n anpassar applikationer till specifika regioner eller kulturer.

F2: Vilka typer av meddelandekällor stöds av Spring MVC?
S: Spring MVC stöder ResourceBundleMessageSource, ReloadableResourceBundleMessageSource och DatabaseMessageSource.

F3: Hur ser en lokaliserad meddelandefil ut?
S: En lokaliserad meddelandefil innehåller översatta strängar med nyckel-värde-par, t.ex.: welcome=Välkommen.

F4: Vad är en lokalemanager?
S: En lokalemanager hanterar lokaliseringsinställningar, t.ex. språk och region.

F5: Vilka typer av lokalemanager stöds av Spring MVC?
S: Spring MVC stöder LocaleResolver och LocaleChangeInterceptor.

F6: Hur injicerar jag i18n- och L10n-komponenter i kontrollanter?
S: I18n- och L10n-komponenter kan injiceras i kontrollanter med hjälp av Spring-annotioner, t.ex. @Autowired.

F7: Hur växlar användare dynamiskt sitt lokal?
S: En lokalväxlingsavlyssnare, t.ex. LocaleChangeInterceptor, kan implementeras för att tillåta användare att växla lokal genom att skicka en begäranparameter eller klicka på en länk.

F8: Vilka fördelar har implementering av i18n och L10n?
S: i18n och L10n förbättrar användarupplevelsen, ökar tillgängligheten och utökar applikationens räckvidd till globala marknader.

F9: Kan Spring MVC även användas för att hantera tidzoner?
S: Ja, Spring MVC tillhandahåller stöd för tidszonshantering genom DateTimeFormatterFactoryBean och JodaTimeDialect.

F10: Finns det några externa resurser för att lära sig mer om i18n och L10n i Spring MVC?
S: Ja, Spring-dokumentationen och följande länkar kan vara till hjälp:

* Spring Framework Internationalization (i18n)
* Spring Framework Localization (L10n)