Avec le développement de la mondialisation, de plus en plus de sites Web et d'applications doivent fournir un support multilingue et des fonctions d'internationalisation. Pour les développeurs, la mise en œuvre de ces fonctions n’est pas une tâche facile car elle nécessite de prendre en compte de nombreux aspects, tels que la traduction linguistique, les formats de date, d’heure et de devise, etc. Cependant, en utilisant le framework Spring Boot, nous pouvons facilement implémenter un support multilingue et des applications internationales.
Tout d'abord, comprenons l'interface LocaleResolver fournie par Spring Boot. L'interface LocaleResolver est une interface utilisée pour analyser et renvoyer des objets Locale. L'objet Locale représente la langue, la région et les informations associées utilisées par l'utilisateur. Dans Spring Boot, l'interface LocaleResolver a deux implémentations : CookieLocaleResolver et AcceptHeaderLocaleResolver.
CookieLocaleResolver analyse les objets Locale via les cookies du navigateur. Lorsque l'utilisateur sélectionne une langue, l'objet Locale sera défini sur le navigateur et enregistré dans un cookie. Par conséquent, la prochaine fois que l'utilisateur visitera le site Web, CookieLocaleResolver sera capable de lire l'objet Locale à partir du cookie.
AcceptHeaderLocaleResolver résout les objets Locale via le champ Accept-Language dans l'en-tête de la requête HTTP. Lorsque l'utilisateur envoie une requête avec l'en-tête Accept-Language, AcceptHeaderLocaleResolver analysera l'objet Locale et le renverra.
En plus de l'interface LocaleResolver, Spring Boot fournit également l'interface MessageSource. L'interface MessageSource est utilisée pour analyser et traiter les messages multilingues. Dans Spring Boot, l'interface MessageSource a deux implémentations : ResourceBundleMessageSource et ReloadableResourceBundleMessageSource.
ResourceBundleMessageSource est une implémentation simple qui analyse les messages multilingues à partir d'un fichier de propriétés fourni. Le fichier de propriétés contient des paires clé-valeur, où la clé est l'identifiant du message et la valeur est le message lui-même. Par exemple, pour les messages anglais et chinois, le fichier de propriétés peut ressembler à ceci :
# messages_en_US.properties hello=Hello world! # messages_zh_CN.properties hello=你好,世界!
Lorsque nous avons besoin d'afficher un message à l'utilisateur, nous pouvons utiliser l'interface MessageSource pour obtenir le message correspondant puis l'afficher aux utilisateurs.
ReloadableResourceBundleMessageSource est très similaire à ResourceBundleMessageSource, mais il nous permet de recharger le fichier de propriétés pendant que l'application est en cours d'exécution. Ceci est utile pour les applications qui nécessitent des messages fréquemment mis à jour.
Lors de la mise en œuvre d'un support multilingue et d'applications internationales, nous devons généralement prendre en compte les problèmes de date, d'heure et de format monétaire. Spring Boot fournit une classe FormattingConversionServiceFactoryBean pour résoudre ces problèmes. Nous pouvons l'utiliser pour définir les formats de date, d'heure et de devise et les rendre valides dans les applications multilingues.
Ce qui suit est un exemple d'utilisation de la classe FormattingConversionServiceFactoryBean pour définir les formats de date, d'heure et de devise :
@Configuration public class AppConfig { @Bean public FormattingConversionServiceFactoryBean formattingConversionServiceFactoryBean() { FormattingConversionServiceFactoryBean factoryBean = new FormattingConversionServiceFactoryBean(); factoryBean.setRegisterDefaultFormatters(false); factoryBean.setFormatters(Set.of(dateTimeFormatter(), dateFormatter(), numberFormatter())); return factoryBean; } private DateTimeFormatter dateTimeFormatter() { return DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(LocaleContextHolder.getLocale()); } private DateTimeFormatter dateFormatter() { return DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(LocaleContextHolder.getLocale()); } private NumberFormatter numberFormatter() { return new NumberFormatter(NumberFormat.getCurrencyInstance(LocaleContextHolder.getLocale())); } }
Dans le code ci-dessus, nous créons un FormattingConversionServiceFactoryBean pour définir la date, l'heure et format monétaire. Nous utilisons DateTimeFormatter et NumberFormatter pour définir les formats de date, d'heure et de devise, et utilisons la méthode LocaleContextHolder.getLocale() pour obtenir l'objet Locale de l'utilisateur actuel.
Enfin, nous devons configurer LocaleResolver et MessageSource dans notre application pour prendre en charge plusieurs langues. Nous pouvons y parvenir en utilisant les annotations @EnableWebMvc et @Configuration fournies par Spring Boot. Voici un exemple de classe de configuration :
@Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Bean public LocaleResolver localeResolver() { AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver(); resolver.setDefaultLocale(Locale.US); return resolver; } @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages"); messageSource.setFallbackToSystemLocale(false); return messageSource; } @Override public void addInterceptors(InterceptorRegistry registry) { LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor(); localeChangeInterceptor.setParamName("lang"); registry.addInterceptor(localeChangeInterceptor); } }
Dans le code ci-dessus, nous créons une classe de configuration WebConfig et activons les fonctionnalités Spring MVC à l'aide de l'annotation @EnableWebMvc. Nous utilisons le bean localeResolver() et le bean messageSource() pour définir LocaleResolver et MessageSource. Nous avons également ajouté un LocaleChangeInterceptor en utilisant la méthode addInterceptors(), et dans cet intercepteur nous avons utilisé le paramètre "lang" pour changer la langue de l'utilisateur.
Pour résumer, nous pouvons facilement implémenter un support multilingue et des applications internationales via l'interface LocaleResolver, l'interface MessageSource et la classe FormattingConversionServiceFactoryBean fournies par Spring Boot. En utilisant les méthodes ci-dessus, nous pouvons créer plus facilement et plus commodément une application mondiale qui répond aux différents besoins linguistiques, culturels et régionaux des utilisateurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!